为了账号安全,请及时绑定邮箱和手机立即绑定

CakePHP:将DisplayField 设置为虚拟字段

CakePHP:将DisplayField 设置为虚拟字段

PHP
ITMISS 2021-06-23 09:06:52
我正在关注 CakePHP 3.7 的文档,以便在选择输入控件中显示虚拟字段。DeliveryNotesTable.phppublic function initialize(array $config){    parent::initialize($config);    $this->setTable('delivery_notes');    $this->setDisplayField('reference');    $this->setPrimaryKey('id');    $this->belongsTo('Customers', [        'foreignKey' => 'customer_id'    ]);    $this->belongsTo('ShipmentReasons', [        'foreignKey' => 'shipment_reason_id'    ]);    $this->belongsTo('ShipmentMethods', [        'foreignKey' => 'shipment_method_id'    ]);    $this->hasMany('ItemsDeliveryNotes', [        'foreignKey' => 'delivery_note_id'    ]);    $this->hasMany('ItemOrders', [        'foreignKey' => 'delivery_note_id'    ]);}protected function _getReference(){    return $this->deliveryNoteNumber . ' ' . $this->deliveryNoteDate;}我在 DeliveryNote.php 中公开虚拟字段:class DeliveryNote extends Entity{    protected $_accessible = [        'customer_id' => true,        'shipment_reason_id' => true,        'deliveryNoteNumber' => true,        'deliveryNoteDate' => true,        'shipment_method_id' => true,        'number_of_packages' => true,        'weight' => true,        'customer' => true,        'shipment_reason' => true,        'shipment_method' => true,        'items_delivery_notes' => true    ];    protected $_virtual = [        'reference'    ];}在我的控制器中,我加载相关数据:public function add($id){    $itemOrder = $this->ItemOrders->newEntity();    $itemOrder['order_id'] = $id;    if ($this->request->is('post')) {        $itemOrder = $this->ItemOrders->patchEntity($itemOrder, $this->request->getData());        if ($this->ItemOrders->save($itemOrder)) {            $this->Flash->success(__('The {0} has been saved.', 'Item Order'));            return $this->redirect(['controller' => 'orders', 'action' => 'index']);        }最后,在模板中我创建了选择控件:<?= $this->Form->control('delivery_note_id', ['options' => $deliveryNotes, 'empty' => true]); ?>但它是空的,没有显示任何项目。相反,如果我设置:$this->setDisplayField('id');或任何其他字段,选择控件已正确填充。我想念这个虚拟领域的创建过程吗?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信