cakePHP: автоматические элементы формы, заполнение списка выбора - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть две таблицы, users{name,id,age_range_id} и age_ranges{id,range_name}.
Есть также две модели, контроллеры и соответствующие файлы просмотра.

В представлениях у меня есть файл adduser.ctp, который содержит правильную форму.
Я хочу иметь вход (выбрать), который будет содержать параметры из поля age_ranges.name.
Итак, в модели пользователей я добавил var $hasMany = 'age_ranges'; Что дальше?

Я знаю, что могу использовать $this->set для сохранения параметров в виде массива в контроллере, а затем использовать их в представлении.
но я предполагаю (неправильно?), что, связывая модели, существует «автоматический» способ сделать это. Что привело меня к вопросу: как?

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

Вы можете сделать это:

$this->User->AgeRange->find('list') и передать его в представление для оператора выбора

1 голос
/ 02 февраля 2011

Я не буду повторять то, что Торп и догматик уже написали. Они оба верны.

Однако, хотя трудно убедиться, не увидев файлы модели, Commonsense говорит мне, что в модели 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

1 голос
/ 02 февраля 2011

добавить $ this-> set ('ageRanges', $ this-> User-> AgeRange-> find ('list'));к действию контроллера

затем добавьте $ this-> Form-> input ('age_range_id') в форму

...