-1

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

控制器: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();
  }
}
4

2 回答 2

1

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

编辑:由于某种原因(为什么?),您扩展的不是 AppModel 而是 ShopModel,因此请在您的 Customer 模型中尝试此操作:

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

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

于 2013-09-04T14:20:58.067 回答
0

模型文件名应该是Customer.php,不要附加model到您的模型名称,在您的Customer.php

<?php

class Customer extends ShopModel {
   // ...
}
于 2013-09-04T14:32:02.227 回答