2012-12-13 12 views
19

Jak używać modelu w komponencie w CakePHP?Użyj modelu komponentu

w sterowniku można użyć

public $uses = array(...); 

ale to nie działa w komponencie.

Co robi?

Odpowiedz

32

Spróbuj kod:

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

proste zapytanie z modelu do komponentu

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

To działa, dziękuję – AgeDeO

+0

jesteś welocome @LucPrevoo –

+0

lepszą 'Yourmodel' (wielkimi literami) – mark

13

Można zrobić to w ten sposób:

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

Ale to jest Załóżmy, że don Użyj modeli wewnątrz komponentów.

+0

dlaczego rada nie używać modelu wewnątrz komponentu? –

+0

Gdy zaczniesz używać więcej niż jednego Modelu w komponencie, lepiej będzie użyć zachowania. – Alvaro

+2

to zawsze zależy od konkretnego przypadku użycia. pytanie nie ujawnia jednak zbyt wiele. – mark

2

Jeśli potrzebujesz bieżącego modelu, możesz użyć wywołania zwrotnego komponentu lub startup().

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

Teraz można uzyskać dostęp model wszędzie w komponencie.

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