2012-12-13 25 views
19

Làm cách nào để sử dụng một mô hình trong một thành phần trong CakePHP?Sử dụng một mô hình trong một thành phần

Trong một bộ điều khiển bạn có thể sử dụng

public $uses = array(...); 

nhưng điều đó không làm việc trong một phần.

Làm gì?

Trả lời

32

Hãy thử mã này:

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

truy vấn đơn giản với mô hình của bạn vào thành phần của bạn

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

này Làm việc, cảm ơn bạn – AgeDeO

+0

bạn welocome @LucPrevoo –

+0

tốt hơn 'Yourmodel' (chữ hoa) – mark

13

Bạn có thể làm theo cách này:

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

Nhưng nó là giả sử bạn don Không sử dụng Mô hình bên trong các thành phần.

+0

lý do tại sao bạn lời khuyên để không sử dụng mô hình bên trong thành phần? –

+0

Khi bạn bắt đầu sử dụng nhiều hơn một Mô hình trong một thành phần, tốt hơn nên sử dụng một hành vi. – Alvaro

+2

nó luôn phụ thuộc vào trường hợp sử dụng cụ thể. câu hỏi không tiết lộ quá nhiều, mặc dù. – mark

2

Nếu bạn cần Mô hình hiện tại, bạn có thể sử dụng gọi lại initialize() hoặc startup() gọi lại của Thành phần.

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

Bây giờ bạn có thể truy cập vào mô hình ở mọi nơi trong thành phần của mình.

public function countAllItems() { 
    return $this->Model->find('count'); 
} 
Các vấn đề liên quan