2012-12-13 19 views
19

CakePHP'de bir bileşende bir modeli nasıl kullanırım?Bileşeni modelde kullanma

bir denetleyici olarak

Eğer

public $uses = array(...); 

kullanabilirsiniz ama bu bir bileşen çalışmaz.

Neler yapar?

$result= $model->find('all'); 

cevap

32

bu kodu deneyin

$this->ModelName = ClassRegistry::init('ModelName'); 

Ama don seni varsayalım Modelleri bileşenlerin içinde kullanmayın.

+0

Bu Works, sen welocome – AgeDeO

+0

teşekkür ederim: hayatımı kurtardın D: D –

+0

daha iyi 'Yourmodel' (büyük harf) – mark

13

Sen bu şekilde yapabileceğini bileşeniniz Modelinizle

$model = ClassRegistry::init('Yourmodel'); 

Basit sorgu:

+0

Eğer danışma bileşenlerin içinde modelini kullanmamayı neden? –

+0

Bir bileşendeki birden fazla Model kullanmaya başladığınızda, bir davranış kullanmak daha iyi olabilir. – Alvaro

+2

her zaman belirli kullanım durumuna bağlıdır. Ancak soru çok fazla ortaya çıkmaz. – mark

2

Geçerli Modele ihtiyacınız varsa, Bileşenin initialize() veya startup() geri bildirimini kullanabilirsiniz.

public function initialize(Controller $controller) { 
    $this->Controller = $controller; 
    $this->Model = $this->Controller->{$this->Controller->modelClass}; 
    $this->modelAlias = $this->Model->alias; 
    parent::initialize($controller); 
} 

Artık modele bileşeninizin her yerinde erişebilirsiniz.

public function countAllItems() { 
    return $this->Model->find('count'); 
}