cakephp 2 $ this->未设置模型

时间:2013-09-04 14:03:12

标签: php cakephp cakephp-appmodel cakephp-2.4

我正在使用Cake 2.4,如果我在我的控制器中调试$ this,那么$ this-> Model未设置但应该。

Controller:CustomersController(.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();
  }
}

2 个答案:

答案 0 :(得分:1)

您的模型文件名错误。它应该是“Customer”而没有“Model”后缀。只有这样,它才会自动加载并在控制器中以$ this-&gt; Customer的形式提供。

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

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

继承控制器或模型时,CakePHP无法正确合并/更新所有属性。

答案 1 :(得分:0)

模型文件名应为Customer.php,请勿将model附加到您的模型名称,请在Customer.php

中执行此操作
<?php

class Customer extends ShopModel {
   // ...
}