CakePHP在SELECT输入中选择默认值

erj*_*ang 16 php cakephp helpers relationships cakephp-2.x

使用CakePHP:

我有多对一的关系,让我们假装它是很多叶子到树.当然,我烘焙了一个表单来向树中添加一个Leaf,你可以使用表单助手创建的下拉框(标记)指定它是哪个树.

唯一的一点是,SELECT框始终默认为Tree#1,但我希望它默认为它被添加到的树:

例如,调用example.com/leaf/add/5将调出接口以向树#5添加新的Leaf.Leaf.tree_id默认为"Tree 5" 的下拉框,而不是它当前默认为"Tree 1".

我需要在Leaf控制器和Leaf view/add.ctp中执行此操作吗?

Rya*_*yan 52

在CakePHP 1.3中,用于'default'=>value选择选择输入中的默认值:

$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3'));
Run Code Online (Sandbox Code Playgroud)

  • 为什么这不标记为答案?这是正确的(另一个可能是一个建议,但这是关于这个问题的真正答案!) (10认同)
  • 这在蛋糕1.2中也是正确的.为了阻止你发疯 - 不要只是刷新页面以查看默认是否有效(它将保留选择的值),你需要返回一个页面并再次点击该页面(或者去点击地址栏并点击回车) (3认同)

小智 20

你永远不应该使用select(),或者text(),或者radio()等; 这是一种可怕的做法.你应该使用input():

$form->input('tree_id', array('options' => $trees));
Run Code Online (Sandbox Code Playgroud)

然后在控制器中:

$this->data['Leaf']['tree_id'] = $id;
Run Code Online (Sandbox Code Playgroud)

  • 我不确定"可怕的做法" (31认同)
  • 相信他所说的Miles,是一个可怕的练习,我花了2个小时的时间来设置Cake的"after"属性与$ this-> Form-> Select()并且它不起作用精细.为了节省宝贵的时间,请使用$ this-> Form-> input作为Select. (3认同)
  • 你能解释一下这个好一点吗?变量`$ tree`在哪里定义?是不是`$ options`应该是一个带有键选项类型的数组? (2认同)

Sad*_*san 9

 $this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));
Run Code Online (Sandbox Code Playgroud)

这将从$ leafs中的选项列表中选择默认的第二个索引位置值.


小智 8

第三个参数应该是数组('selected'=> value)