CakePHP displayField用法

时间:2010-02-02 16:43:39

标签: php cakephp

你能告诉我如何使用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

2 个答案:

答案 0 :(得分:2)

所以,你有Task belongsTo Project(FK:project_id)。您想在任务/添加和任务/编辑视图中创建项目选择框。

问题是项目表没有名为nametitle的字段,因此选择框为空。如果有nametitle字段,您就不会有任何问题,对吗?

嗯,这是解决方案,在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使其变得容易。