4

您好我正在尝试使用表单助手将禁用选项添加到选择框我使用此代码生成一个额外的空字段,但我希望禁用此字段。

echo $this->Form->input('User.usertype_id',array('type'=>'select', 'empty'=>'usertype');

这会产生:

<div class="input select">
    <label for="UserUsertypeId">Usertype</label>
    <select name="data[User][usertype_id]" id="UserUsertypeId">
        <option value="">usertype</option>
        <option value="1">athlete</option>
        <option value="2">trainer</option>
    </select>
</div>

但我想要这个:

<div class="input select">
    <label for="UserUsertypeId">Usertype</label>
    <select name="data[User][usertype_id]" id="UserUsertypeId">
        <option value="" disabled="disabled" selected="selected">usertype</option>
        <option value="1">athlete</option>
        <option value="2">trainer</option>
    </select>
</div>

有什么办法可以简单地做到这一点,还是我应该只使用一些js?

4

6 回答 6

10

如果您事先知道选项,则可以构建$options数组以在选择菜单中使用。这应该给你你想要的东西:

$options = array(
            array(
                'name' => 'usertype',
                'value' => '',
                'disabled' => TRUE,
                'selected' => TRUE
            ),
            'athlete',
            'trainer'
            );

echo $this->Form->input('User.usertype_id', array('type' => 'select', 'options' => $options));

或者这可能有效,但我也没有测试过:

echo $this->Form->input('User.usertype_id', array('type' => 'select', 'empty'=> array('text' => 'usertype', 'selected' => TRUE, '禁用' => FALSE)));

于 2010-11-04T17:31:51.370 回答
5

我知道这个问题最后一次更新是在 2010 年,但我有实际答案。查看 CakePHP 文档中的示例:

$options = array(
    'Value 1' => 'Label 1',
    'Value 2' => 'Label 2'
);
echo $this->Form->select('Model.field', $options, array(
    'multiple' => 'checkbox',
    'disabled' => array('Value 1')
));

http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::select

于 2014-03-19T07:00:03.230 回答
2

试试这个!!

$operations = [
  '' => 'Select Operation',
  'query' => 'Query',
  'create' => 'Create',
  'update' => 'Update',
  'upsert' => 'Upsert',
  'delete' => 'Delete'
];

echo $this->Form->input('operation[]',[
  'type' => 'select',
  'options' => $operations,
  'class' => 'operation-class',
  'id' => 'operation-id-1',
  'required' => 'required',
  'label' => false,
  'disabled' => [''],
  'value' => ''
]);
于 2018-04-14T19:15:04.887 回答
1

嗯,看起来不可能在评论中添加一些代码块,因此,您的两个选项都生成了:

<select name="data[User][usertype_id]" id="UserUsertypeId">
  <option value="text">usertype</option>
  <option value="selected">1</option>
  <option value="disabled"></option>
  <option value="1">athlete</option>
  <option value="2">trainer</option>
</select>

所以这不起作用,但我是这样做的:

echo $this->Form->input('User.usertype_id', array('type' => 'select', 'empty'=> array('text" disabled="disabled" selected="selected' => '')));

这会生成一个值为: (" disabled="disabled" selected="selected) 的选项,因此它变为:

...
<option value="" disabled="disabled" selected="selected"></option>
...

这是一个临时解决方案,直到我找到更好的东西,欢迎提出建议!

于 2010-11-04T22:05:33.673 回答
0

我合并了 Weptunus 和 stevelove 的解决方案。

在控制器中:

$examples = $this->Test->Examples->find('list');
$this->set('examples', $examples);

在视图中

echo $this->Form->input('example_id', array('empty' => array(
        '' => array(
            'name' => __('Select an Example'),
            'value' => '',
            'disabled' => TRUE,
            'selected' => TRUE
        )
    ))
);
于 2016-02-04T18:02:08.877 回答
0

我在蛋糕 1.3 中发现了这个成功

<?php echo $this->Form->input('example', array('type' => 'select','id' => 'id','options' => array('empty "disabled="disabled" selected="selected"' => 'name empty', 'val1' => 'text1', 'val2' => 'text2')); ?>
于 2021-07-24T16:31:51.580 回答