cakePHP: автоматические элементы формы, заполнение списка выбора
У меня есть две таблицы, users{name,id,age_range_id}
а также age_ranges{id,range_name}
,
Есть также две модели, контроллеры и соответствующие файлы просмотра.
Во взглядах у меня есть adduser.ctp
файл, который содержит правильную форму.
То, что я хочу, это иметь вход (выбрать), который будет содержать параметры из age_ranges.name
поле.
Итак, в модели пользователей я добавил var $hasMany = 'age_ranges';
Что дальше?
Я знаю, что могу использовать $this->set
сохранить параметры в виде массива в контроллере, а затем использовать его в представлении.
но я предполагаю (неправильно?), что, связывая модели, существует "автоматический" способ сделать это. Что привело меня к вопросу: как?
3 ответа
Я не буду повторять то, что Торп и догматик уже написали. Они оба верны.
Однако, хотя трудно убедиться, не увидев файлы вашей модели, здравый смысл говорит мне, что в модели User отношение должно быть User: hasOne: AgeRange, а в модели AgeRange это AgeRange: hasMany: User, а не наоборот ты написал.
Кроме того, вы указываете не имя таблицы (age_ranges) в отношении, а имя модели (AgeRange).
Смотрите эти страницы в руководстве:
http://book.cakephp.org/view/1001/Understanding-Models & http://book.cakephp.org/view/1039/Associations-Linking-Models-Together
Добавить $this->set('ageRanges', $this->User->AgeRange->find('list')); к действию контроллера
затем добавьте $this->Form->input('age_range_id') в форму
Вы можете сделать это:
$this->User->AgeRange->find('list')
и передать это в представление для оператора выбора