CakePHP displayField использование - PullRequest
2 голосов
/ 02 февраля 2010

Можете ли вы сказать мне, как использовать директиву 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 в поле выбора формы?

Ответы [ 2 ]

2 голосов
/ 02 февраля 2010

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

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

Хорошо, вот решение, в модели Project добавьте это:

var $displayField = 'projectName';

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

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

0 голосов
/ 02 февраля 2010

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...