cakehp2$this->;未设置模型


cakephp 2 $this->Model not set

我正在开发Cake 2.4,如果我在控制器中调试$this,那么$this->Model没有设置,但应该设置。

控制器:客户控制器(.php)

型号:CustomerModel(.php)

由于命名惯例是正确的,我不知道问题在哪里。

相关代码:

Customer.php:
<?php
class Customer extends Shop {
   public $validate = array(/* ... */);
   protected $_schema = array(/* ... */);
   public function beforeSave($options = array()) {
      parent::beforeSave($options);
   }
}

CustomersController.php:
<?php
App::uses('ShopsController', 'Controller');
class CustomersController extends ShopsController {
  public function beforeFilter() {
    $this->Auth->allow('login');
    parent::beforeFilter();
  }
}

您的模型文件名错误。它应该是"客户",没有"型号"后缀。只有这样,它才会自动加载,并在控制器中作为$this->Customer可用。

编辑:出于某种原因,你不是在扩展AppModel,而是在扩展ShopModel(为什么?),所以在你的客户模型中试试这个:

public $name = 'Customer';
public $useTable = 'customers';

当您继承控制器或模型时,CakePHP不会正确地合并/更新所有属性。

型号文件名应该是Customer.php,不要将model附加到您的型号名称中,在Customer.php 中这样做

<?php
class Customer extends ShopModel {
   // ...
}