У меня есть две модели, Category
и Point
. Ассоциации определяются как:
Category hasMany Point
Point belongsTo Category
Я хотел бы при добавлении Points
к моей базе данных чтобы смочь выбрать категорию это принадлежит от a <select>
поле, наряду с остальной частью данных формы.
Где я должен был бы set
список категории и как я мог сделать это? И как я произвел бы избранное поле?
Я предполагаю, что это могло быть, покончили
$form->input('categorieslist',array('type'=>'select')); //categorieslist needs
//setting somewhere.
В контроллере:
$categories = $this->Point->Category->find('list');
$this->set(compact('categories'));
В представлении:
$form->input('category_id',array('type'=>'select'));
Также для обобщения:
В представлении с доступом к помощнику формы
<?php
echo $form->input( 'dataKey', array(
'type' => 'select',
'options' => array(
'key1' => 'val1',
'key2' => 'val2',
),
));
?>
В приведенном выше примере будет отображаться выборка ввода с двумя параметрами. Вы также можете поместить пустой вариант в качестве первого элемента. Передача значения true просто добавит пустой параметр с пустым значением в начало параметров, отображаемых в HTML.
<?php
echo $form->input( 'dataKey', array(
'type' => 'select',
'options' => array(
'key1' => 'val1',
'key2' => 'val2',
),
'empty' => true,
));
?>
Вы можете передать строку в «пустой» ключ, чтобы он отображал настраиваемый текст в качестве ключевого поля для пустого параметра.
<?php
echo $form->input( 'dataKey', array(
'type' => 'select',
'options' => array(
'California' => 'CA',
'Oregon' => 'OR',
),
'empty' => 'choose a state',
));
?>
Последний пример, вы также можете предварительно выбрать опцию с помощью выбранной клавиши. Значение должно соответствовать значению одной из опций выбора, а не ключу.
<?php
echo $form->input( 'dataKey', array(
'type' => 'select',
'options' => array(
'California' => 'CA',
'Oregon' => 'OR',
),
'empty' => 'choose a state',
'selected' => 'California',
));
?>
Модель-> find ('list', array (...));
всегда будет возвращать массив, отформатированный для использования с параметрами поля выбора. Если вы передадите в представление данные, хранящиеся в переменной с наименованием модели множественного числа в нижнем регистре, то есть ($ this-> set ('Categories', $ Categories);
, то вы автоматически создадите раскрывающиеся списки для связанных моделей, используя помощник формы в представлении и передавая ему индекс данных с тем же именем модели в единственном числе с суффиксом «_id».
Ответ Азиза на № 2 является примером этого автоматического действия .