Это другой вопросCakePHP displayField .. больше, чем один в модели
Showing something other than ID in scaffold Cakephp
был дан ответ во многих местах здесь и в других местах и сделок с ситуацией, когда я хочу отборный список, но текстовое поле, чтобы показать вместо id не называется «Name». По-видимому, торт может справиться с этим, если вы скажете, что это поле называется instaed из «Name», поставив следующий в его модели:
var $displayField = 'NonNameName';
Однако все примеры для одного выбора. Но у меня есть три списка выбора, так как я могу их добавить? Конечно, я не могу сделать так, как показывает следующий код (например, три строки «var $ displayField =« ... »;» .. не имеет смысла иметь три $ displayField.
<?php
App::uses('AppModel', 'Model');
/**
* Visit Model
*
* @property User $User
* @property Referrer $Referrer
* @property Company $Company
*/
class Visit extends AppModel {
//The Associations below have been created with all possible keys, those that are not needed can be removed
/**
* belongsTo associations
*
* @var array
*/
var $displayField = 'location';
var $displayField = 'referrer';
var $displayField = 'company';
public $belongsTo = array(
'User' => array(
'className' => 'User',
'foreignKey' => 'user_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Referrer' => array(
'className' => 'Referrer',
'foreignKey' => 'referrer_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Location' => array(
'className' => 'Location',
'foreignKey' => 'location_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Company' => array(
'className' => 'Company',
'foreignKey' => 'company_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
в мой контроллер у меня есть
$companies= $this->Visit->Company->find('list');
$locations = $this->Visit->Location->find('list', array('conditions' => array('company_id' => $this->Auth->user('company_id'))));
$referrers = $this->Visit->Referrer->find('list', array('conditions' => array('company_id' => $this->Auth->user('company_id'))));
$this->set(compact('locations','referrers','companies'));
Извините, но я полагался на предыдущее сообщение для передачи информации. Я уже сделал то, что вы предлагаете Росс.Cake зависит от текстовых полей, чтобы показывать вместо имени, называемого «Name», для автоматического отображения текста вместо id. Однако я не хочу называть их «Имя». Нет проблем, bc, очевидно, Cake покрывает это, позволяя мне помещать «var $ displayField = 'username"; " в модели, чтобы сказать Cake, поля «Name» - это «Location», «Referrer» и «Company». Тем не менее, все примеры, которые я могу найти, относятся только к одному не трем полям без имени. Что такое синтаксис и где я их размещаю? – curtisp
Поместите '$ displayField =' Поле' в каждую модель. Поэтому поле отображения модели 'Location' -' location' - предполагается, что в вашей таблице есть поле, называемое 'location'. Или я вас не понимаю? – Ross
А, ок! Это и есть. Благодаря! Мое замешательство было вокруг того, куда он пошел. Все его обсуждения сосредоточены на модели, в которой используется выбор. Но ни один (по крайней мере, я не предполагал) специально сказал, чтобы поставить var $ displayField = 'ModelNameName'; в модель, к которой она принадлежит, а не модель, которую вы хотите показать. Конечно, теперь это кажется совершенно очевидным. – curtisp