我有货运,订单和用户。当我尝试设置新货件时,订单displayField正在我的选择下拉列表中正确显示为标签。用户虽然只显示用户的实际ID而不是displayField。
我做错了什么?我正在使用管理脚手架。这是问题吗?
class Shipment extends ShipmentsAppModel {
public $belongsTo = array('Order', 'User');
}
class Order extends AppModel {
public $belongsTo = array('User');
public $name = 'Order';
public $displayField = 'title';
}
class User extends UsersAppModel {
public $displayField = 'email';
}
答案 0 :(得分:0)
看到,UsersAppModel
延伸到User
。根据CakePHP惯例,它应该AppModel
。 Order
正在扩展AppModel
,其工作正如您所期望的那样。
尝试使用AppModel
代替UsersAppModel
。 $displayField
自动继承自AppModel
,它是一个神奇变量,在CakePHP核心中定义,默认为id
字段。重新使用我们模型中的变量,我们只重写该值,这里AppModel
是链接器。
但是,我认为UsersAppModel
与像AppModel
这样的CakePHP核心模型继承没有关系,这就是问题所在。
所以而不是
class User extends UsersAppModel {
public $displayField = 'email';
}
使用
class User extends AppModel {
public $displayField = 'email';
}
答案 1 :(得分:0)
首先检查您的代码语法
应该是
class Shipment extends AppModel {}
和
class User extends AppModel{}