добавить отключенную (и выбранную) опцию для выбора элемента с помощью помощника по форме

привет, я пытаюсь добавить отключенную опцию в поле выбора с помощью помощника формы. Я использую этот код для создания дополнительного пустого поля, но я хочу, чтобы это поле было отключено.

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?


person Rien C.    schedule 04.11.2010    source источник


Ответы (6)


Если вы заранее знаете параметры, вы можете создать массив $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' = > ИСТИНА, 'отключено' => ЛОЖЬ)));

person stevelove    schedule 04.11.2010
comment
Работает нормально .. Спасибо. - person Muhammad Usman; 27.04.2016

Я знаю, что последний раз этот вопрос обновлялся в 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

person Michael Ozeryansky    schedule 19.03.2014

Попробуй это!!

$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' => ''
]);
person Abhay    schedule 14.04.2018

mhmm похоже, что невозможно добавить некоторые кодовые блоки в комментарий, поэтому оба ваших варианта сгенерированы:

<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>
...

это временное решение, пока не найду что-то лучше, предложения приветствуются!

person Rien C.    schedule 04.11.2010
comment
Проверьте мой ответ еще раз. Я отредактировал первый вариант, чтобы он работал правильно. - person stevelove; 05.11.2010

Сливаю решение 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
        )
    ))
);
person Nicolás Alonso Pintado    schedule 04.02.2016

я нашел этот успех в торте 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')); ?>
person Gilang Januar    schedule 24.07.2021