你能告诉我如何使用CakePHP的displayField指令吗?我无法弄清楚如何使用它。
因此,在模型文件中,我有以下代码:
<?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
?
答案 0 :(得分:2)
所以,你有Task belongsTo Project
(FK:project_id)。您想在任务/添加和任务/编辑视图中创建项目选择框。
问题是项目表没有名为name
或title
的字段,因此选择框为空。如果有name
或title
字段,您就不会有任何问题,对吗?
嗯,这是解决方案,在Project模型中添加:
var $displayField = 'projectName';
http://book.cakephp.org/view/71/Model-Attributes
所以你正朝着正确的方向前进,只是搞砸了模特。我希望你现在明白了;]
答案 1 :(得分:0)
你基本上可以这样做(在控制器中):
$this->set('tasks', $this->Task->find('list'));
使用名称task_id进行输入,并确保强制它为选择框,因此(在视图中):
echo $form->input('task_id', array('label' => 'youLabelHere', 'type' => 'select'));
displayField让您有机会选择在选择框中将哪个字段用作显示选项(其中之一),如果模型中没有提供,则脚本将查找“名称”或“标题”。
如果您不想在用户表单中显示项目(添加,编辑选项),那么您的关联不正确。当你想要制作一个选择框时,总是要确保两个模型之间存在关联(具有良好的传统表格和键名称),Cake使其变得容易。