2012-02-13 6 views
1

私はCakePHP 2.0を使用しています。私はAppControllerの中default.ctpにビューのための変数を設定しようとしているCakePHP:Non Object

// File: Model/Coupon.php 
// Table Name: coupons 
class Coupon extends AppModel { 
    public $displayField = 'Coupon'; 
} 

// File: Model/Category.php 
// Table Name: categories 
class Category extends AppModel { 
    public $displayField = 'Category'; 
} 

// File: Controllers/CouponsController.php 
class CouponsController extends AppController { 
} 

// File: Controllers/CategoriesController.php 
class CategoriesController extends AppController { 
} 

// File: Controllers/AppController.php 
class AppController extends Controller { 
    public $helpers = array('Html', 'Form'); 

    public function beforeFilter() { 
     //$this->set('cat', $this->Category->find()); 
     $this->set('cat', $this->Coupon->find()); 
    } 
} 

:私は2つのモデル/コントローラ(カテゴリ/クーポン)を持っています。私は 'cat'を "$ this-> Coupon-> find()"に設定すると、私の視点で印刷できる配列を返します。 "$ this-> Category-> find()"というコメント行に「cat」を設定すると、次のエラーが表示されます。

致命的なエラー:()内のオブジェクトではないfind ...

私はこの1トンを処理する際にエラーを試みましたが、わかりません。何か不足していますか?

+0

私はそれを理解しました。私はbeforeFilter()関数でモデルを最初にロードしなければなりませんでした。 – execv

答えて

1

あなたのモデルは、アクセスしようとする前に読み込まれていないようです。両方のモデルがコントローラにロードされていることを確認する必要があります。これは、複数の方法のいずれかで行うことができます。

// before the class declaration 
App::uses('Category','Model'); 
App::uses('Coupon','Model'); 

// in the beforeFilter 
$this->loadModel('Category'); 
$this->loadModel('Coupon'); 

// as a var in the controller 
public $uses = array('Category','Coupon'); 
関連する問題