使用CakePHP:

我有一个多到一的关系,让我们假装这是很多叶子来树木。当然,我烘烤一个形式向叶添加到树中,并可以指定它是与由表单辅助创建的下拉框(标记),该树

唯一的一点是,选择框始终默认为树#1,但我想它默认为它被添加到树:

例如,主叫example.com/leaf/add/5将调出接口到一个新的叶添加到树#5。对于Leaf.tree_id下拉框将默认为“树5”,而不是“树1”,它目前默认为

什么我需要把我的叶控制器和叶view/add.ctp做到这一点?

有帮助吗?

解决方案

您不应该使用select(),或text(),或radio()等;这是可怕的做法。您应该使用input()

$form->input('tree_id', array('options' => $trees));

然后,在控制部:

$this->data['Leaf']['tree_id'] = $id;

其他提示

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

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

第三个参数应该像阵列( '选择'=>值)

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

此将从$叶子选项的列表中选择默认第二索引位置值。

假设你使用形式辅助以产生以下形式:

select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)

设置第三个参数来设置所选择的选项。

cakephp的版本> = 3.6

echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);

要在使选择框文本默认使用$form->select()方法。这里是你如何做到这一点。

$options = array('m'=>'Male','f'=>'Female','n'=>'neutral');

$form->select('Model.name',$options,'f');

上面的代码将在默认列表框中选择Female

请烘烤...

FormHelper::select(string $fieldName, array $options, 
array $attributes)

$attributes['value']设置哪个值应当被选择的默认

<?php echo $this->Form->select('status', $list, array(
    'empty' => false, 
    'value' => 1)
); ?>

如果您正在使用CakePHP版本3.0以上,则可以在选择输入使用如实施例下面给出的在空的属性添加默认值。

echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);

的最佳答案,这可能是

不要这个工作使用的输入使用选择,而不是

这样

echo  $this->Form->input('field_name', array(
          'type' => 'select',
            'options' => $options_arr, 
            'label' => 'label here',
            'value' => $id,  // default value
            'escape' => false,  // prevent HTML being automatically escaped
            'error' => false,
            'class' => 'form-control' // custom class you want to enter
        ));

希望它能帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top