1

我有发货、订单和用户。当我尝试设置新货件时,Order 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';
}
4

2 回答 2

0

首先检查您的代码语法

它应该是

class Shipment extends AppModel {}

class User extends AppModel{}
于 2013-11-14T07:01:03.383 回答
0

看到,UsersAppModel延伸User。它应该AppModel根据 CakePHP 的约定。Order正在扩展AppModel,它的工作方式如您所愿。

尝试使用AppModel而不是UsersAppModel. $displayField自动继承自,它是一个神奇的AppModel变量,在 CakePHP 核心中使用默认id字段定义。在我们的模型中重新使用那个变量,我们只是重写那个值,这里AppModel是链接器。

但是,这里我认为UsersAppModel与 CakePHP 核心模型继承没有关系,AppModel这就是问题的关键。

所以而不是

class User extends UsersAppModel {
   public $displayField = 'email';
}

利用

class User extends AppModel {
   public $displayField = 'email';
}
于 2013-11-13T20:15:01.540 回答