17

使用 CakePHP:

我有一个多对一的关系,让我们假设它是多叶树。当然,我烘焙了一个表单来将叶子添加到树中,您可以使用表单助手创建的下拉框(标签)来指定它是哪棵树。

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

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

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

4

11 回答 11

54

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

$this->Form->input('Leaf.id', array('type'=>'select', 'label'=>'Leaf', 'options'=>$leafs, 'default'=>'3'));
于 2011-08-05T17:17:28.217 回答
21

你不应该使用select(), or text(), or radio()etc.; 这是可怕的做法。你应该使用input()

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

然后在控制器中:

$this->data['Leaf']['tree_id'] = $id;
于 2009-10-10T06:58:53.033 回答
9
 $this->Form->input('Leaf.id', array(
'type'=>'select',
'label'=>'Leaf',
'options'=>$leafs,
'value'=>2
));

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

于 2013-12-26T11:43:36.490 回答
8

第三个参数应该像 array('selected' =>value)

于 2010-07-07T12:42:12.390 回答
1

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

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

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

于 2009-10-09T21:02:01.470 回答
1

cakephp 版本 >= 3.6

echo $this->Form->control('field_name', ['type' => 'select', 'options' => $departments, 'default' => 'your value']);
于 2018-12-27T09:09:45.940 回答
0

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

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

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

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

继续烤...

于 2011-09-28T05:20:31.150 回答
0
FormHelper::select(string $fieldName, array $options, 
array $attributes)

$attributes['value']设置应该选择哪个值 default

<?php echo $this->Form->select('status', $list, array(
    'empty' => false, 
    'value' => 1)
); ?>
于 2013-04-25T12:29:09.547 回答
0

如果您使用的是 cakephp 版本 3.0 及更高版本,则可以使用以下示例中给出的空属性在选择输入中添加默认值。

echo $this->Form->input('category_id', ['options'=>$categories,'empty'=>'Choose']);
于 2016-07-08T10:11:47.340 回答
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
        ));

希望能帮助到你。

于 2018-07-20T17:23:30.360 回答
0

与在 CakePHP 4.2 中一样,具有默认值的选择表单元素的正确语法非常简单:

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

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

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

$sizes = ['s' => 'Small', 
'm' => 'Medium', 
'l' => 'Large'];
echo $this->Form->select('size', $sizes, ['default' => 'm']);

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

于 2021-08-09T06:59:04.690 回答