Экран CakePHP Использование экрана

Можете ли вы рассказать мне, как использовать директиву DisplayField CakePHP? Я не могу понять, как его использовать.

Итак, в файле модели у меня есть следующий код:

<?php class Task extends AppModel { var $name = 'Task'; var $displayField = 'projectName'; //The Associations below have been created with all possible keys, those that are not needed can be removed var $belongsTo = array( 'User' => array( 'className' => 'User', 'foreignKey' => 'user_id', 'conditions' => '', 'fields' => '', 'order' => '' ... 

Как я могу использовать это, чтобы отобразить поле projectName в поле выбора формы?

Итак, у вас есть Task belongsTo Project (FK: project_id). Вы хотите сделать окно выбора проекта в задачах / добавлении и задачах / редактировать представления.

Проблема заключается в том, что в таблице проектов нет поля, называемого name или title поэтому поле выбора пусто. У вас не было бы проблем, если бы было name или поле title , верно?

Ну, вот решение, в модели проекта добавьте это:

 var $displayField = 'projectName'; 

http://book.cakephp.org/view/71/Model-Attributes

Итак, вы шли в правильном направлении, немного испортили модели. Надеюсь, вы сейчас это понимаете;]

В основном вы можете это сделать (в контроллере):

 $this->set('tasks', $this->Task->find('list')); 

И сделайте ввод с именем task_id и убедитесь, что он является полем выбора, поэтому (в представлениях):

 echo $form->input('task_id', array('label' => 'youLabelHere', 'type' => 'select')); 

displayField дает вам возможность выбрать, какое поле будет использоваться как отображаемый параметр (один из) в поле выбора, если он не указан в модели, сценарий будет искать «имя» или «название».

Если вы не хотите отображать проекты в пользовательских формах (добавьте, отредактируйте параметр), ваши ассоциации будут неправильными. Всегда убедитесь, что существует ассоциация (с хорошими, обычными таблицами и именами клавиш) между двумя моделями, когда вы хотите сделать выборку, Cake делает ее такой же простой, как и она.