CakePHP在SELECT输入中选择默认值

时间:2009-10-09 19:57:08

标签: php cakephp relationships helpers cakephp-2.x

使用CakePHP:

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

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

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

我需要在Leaf控制器和Leaf view/add.ctp中放置什么来执行此操作?

11 个答案:

答案 0 :(得分:50)

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

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

答案 1 :(得分:20)

您绝不能使用select()text()radio()等;这是一种可怕的做法。您应该使用input()

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

然后在控制器中:

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

答案 2 :(得分:8)

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

答案 3 :(得分:8)

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

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

答案 4 :(得分:1)

假设您使用表单助手生成表单:

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

设置第三个参数以设置所选选项。

答案 5 :(得分:0)

要在选择框中设置默认文本,请使用$form->select()方法。这是你如何做到的。

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

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

默认情况下,上面的代码会在列表框中选择Female

继续烘烤......

答案 6 :(得分:0)

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

$attributes['value']设置应选择默认值

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

答案 7 :(得分:0)

如果您使用的是cakephp 3.0及以上版本,则可以使用空属性在select输入中添加默认值,如下例所示。

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

答案 8 :(得分:0)

对此的最佳答案可能是

请勿为此作业使用selct,而应使用输入

像这样

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
        ));

希望有帮助。

答案 9 :(得分:0)

cakephp版本> = 3.6

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

答案 10 :(得分:0)

在 CakePHP 4.2 中,带有默认值的 select 表单元素的正确语法非常简单:

const [x , setX] = useState([]);
const subscribe = Gyroscope.addListener( async({x , y , z , }) => {
        setX((prev) => [x, ...prev])
        setY(y)
        setZ(z)
})
// let array = []
let m = x
console.log('my array is',m)

如果希望不需要解释,default=1 表示第二个值,default=0 表示第一个值。 ;)

选择值时要非常小心,因为它可能会变得有点棘手。上面的示例没有选择字段的特定值,因此其值会自动编号。如果您为每个选择列表条目设置了特定值,并且想要一个默认值,请设置其特定值:

echo $this->Form->select(
                'fieldname',
                ['value1', 
                'value2', 
                'value3'], 
                ['empty' => '(auswählen)','default'=>1]
            );

这个例子来自官方的 4.x Strawberry Cookbook。 https://book.cakephp.org/4/en/views/helpers/form.html#options-for-control