Gọi là Zend_Controller_Plugin_Abstract
đầu tiên. Ở đây bạn có các đối tượng yêu cầu và phản hồi, vì vậy bạn có thể lọc yêu cầu hoặc chuẩn bị một số thông tin từ yêu cầu.
init()
của số Zend_Controller_Action
được gọi tiếp theo là một phần của hàm tạo. Nó có để giúp bạn khởi tạo bộ điều khiển của bạn, mà không cần phải ghi đè lên và lặp lại chữ ký của hàm tạo (Zend_Controller_Action::__contruct()
).
Phương thức preDispatch()
của bộ điều khiển được gọi tại đây. Bạn có thể gọi $request->setDispatched(false)
để bỏ qua hành động hiện tại - không chắc chắn bạn có thể thực hiện điều đó trong init()
Sau đó, phương thức hành động của bạn được gọi là (viewAction()
chẳng hạn). Ở đây bạn làm công việc bình thường của mình như tìm nạp nội dung từ mô hình và điền vào chế độ xem.
Vì vậy, sự khác biệt bây giờ sẽ được rõ ràng:
- Nếu bạn muốn một cái gì đó được thực hiện trước mọi hành động - đặt nó trong một plugin và sử dụng một trong các móc (ngoài
preDispatch()
có routeStartup
và others),
- nếu bạn muốn trước mọi hành động trong bộ điều khiển -
init
hoặc preDispatch()
,
- nếu chỉ cho một hành động đơn lẻ - chính hành động đó.
gì xảy ra giữa các cuộc gọi init()
và preDispatch()
chức năng?
Hầu như không có gì - preDispatch()
được thực thi và nếu bạn chưa gọi $request->setDispatched(false)
, hành động sẽ được thực thi.
Nguồn
2010-02-02 08:54:56
Bạn đang nói về các đối tượng bộ điều khiển? –
@Emil: Tôi đã chỉnh sửa câu hỏi. Bây giờ phải rõ ràng. – understack