Я использую
$form->input('Model.name', array('multiple'=>'checkbox');
Я пытаюсь использовать данные модели для установки определенных флажков.
Как я могу это сделать?
Я использую
$form->input('Model.name', array('multiple'=>'checkbox');
Я пытаюсь использовать данные модели для установки определенных флажков.
Как я могу это сделать?
Решение cmptrgeekken работает для одного флажка. Я предполагаю, что вы создаете несколько флажков, для отношения HABTM или чего-то подобного.
Вам нужно передать массив со значениями элементов, которые будут выбраны для метода, например:
$options = array(1 => 'ONE', 'TWO', 'THREE');
$selected = array(1, 3);
echo $form->input('Model.name', array('multiple' => 'checkbox', 'options' => $options, 'selected' => $selected));
будет генерировать это:
<div class="input select">
<label for="ModelName">Name</label>
<input name="data[Model][name]" value="" type="hidden">
<div class="checkbox">
<input name="data[Model][name][]" checked="checked" value="1" id="ModelName1" type="checkbox">
<label for="ModelName1" class="selected">ONE</label>
</div>
<div class="checkbox">
<input name="data[Model][name][]" value="2" id="ModelName2" type="checkbox">
<label for="ModelName2">TWO</label>
</div>
<div class="checkbox">
<input name="data[Model][name][]" checked="checked" value="3" id="ModelName3" type="checkbox">
<label for="ModelName3" class="selected">THREE</label>
</div>
</div>
Проверяется первый и третий флажки.
Просто помните, что вы на самом деле работаете с элементом множественного выбора, который отображается только как набор флажков (что лучше для ИМО из-за удобства использования).
Я не использую CakePHP, но, согласно документам, кажется, что вы должны добавить опцию 'checked'=>true
:
$form->input('Model.name', array('type'=>'checkbox','checked'=>true));
так как это одна из опций функции checkbox.
$options = array(1 => 'ONE', 'TWO', 'THREE'); $selected = array(1, 3); echo $form->input('Model.name', array( "name"=>$mnus['Aco']['id'], "type"=>"select", "multiple"=>"checkbox", 'options' => $options, 'selected' => $selected) );
это правильный способ для множественного флажка и отмеченного параметра. Я использую это в торте1.3, пожалуйста, повторите проверку кода на своем коде, он должен работать.
echo $this->Form->input('Title', array('type'=>'checkbox', 'label'=>'Label', 'checked'=>'checked'));
Решение Marko, все еще работающее в CakePHP 2.0 +
- > fooobar.com/questions/213237/...
Это просто нужно исправить с помощью нового синтаксиса:
<?php
$options = array(1 => 'ONE', 'TWO', 'THREE');
$selected = array(1, 3);
echo $this->Form->input('ModelName',
array('multiple' => 'checkbox', 'options' => $options, 'selected' => $selected)
);
?>
Еще один способ установить флажок с меткой "рядом" с ней.
$form->checkbox('Model.name', array('checked'=>'checked'))?> Label
Ярлык может быть тем, что вы хотите. пример: 21 000-3000, шина, человек. Я уверен, что вы получили эту идею.
<?php
$subjects = array(1=>'Snow boarding',2=>'Surfing',3=>'Trekking',4=>'Swimming');
$selected_skills = array(0=>2,1=>4);
// For MutiSelect box with selected
$form->input('skills_list',array('label' => 'Skills','options' => $subjects,'class' =>'','multiple'=>true,'selected'=> $selected_skills));
//For Multiple checkbox with checked
$form->input('skills_list',array('label' => 'Skills','options' => $subjects,'class' =>'','multiple'=>'checkbox','selected'=> $selected_skills));
?>
Вот небольшой фрагмент кода из одного из моих проектов -
$categories = $this->Site->Category->find('list', array('recursive' => -1));
$this->set(compact('categories'));
$this->Site->Category->bindModel(array('hasOne' => array('CategoriesSite')));
$selected = $this->Site->Category->find('list', array(
'fields' => array('id'),
'conditions' => array(
'CategoriesSite.site_id' => $this->data['Site']['id'],
),
'recursive' => 0,
));
$this->set(compact('selected'));
Основной ключ для выбранного - 'fields' => array('id')
$options = array("fixed","varry");
$selected = "0";
echo $form->input('Model.name', array('multiple' => 'checkbox', 'options' => $options, 'value' => $selected));
Используйте атрибут value
, чтобы сделать отметку по умолчанию.
'likes_preferences' =>array(
'type'=>'select','label' => 'Main likes/preferences',
'options' => $this->Ethos->toOptionsArray('preferences'),
'multiple' => 'checkbox',
'div'=>array('class'=>'input select checkbox-group clearfix'),
'hiddenField' => false,
),
приведенный выше код для добавления данных, перед тем, как сохранить в базу данных, вам необходимо изменить поле 'likes_preferences' от массива до запятой.
$preferences = implode(',',$this->request->data['Member']['likes_preferences']);
$this->request->data['Member']['likes_preferences'] = $preferences;
$likes = explode(',',$this->request->data['Member']['likes_preferences']);
'likes_preferences' =>array(
'type'=>'select','label' => 'Main likes/preferences',
'options' => $this->Ethos->toOptionsArray('preferences'),
'multiple' => 'checkbox',
'div'=>array('class'=>'input select checkbox-group clearfix'),
'hiddenField' => false,
'selected' => $likes
),
вы закончили, снова вы должны преобразовать массив в строку при обновлении базы данных в действии редактирования.