2010-03-17 33 views
26

Ai đó có thể đưa ra một số mẹo và/hoặc ví dụ về cách Trình cắm và Trình trợ giúp hành động khác nhau? Có những tình huống mà nhiệm vụ cụ thể có thể được thực hiện với một nhiệm vụ nhưng không phải là một nhiệm vụ khác? Đối với tôi, cả hai trông giống nhau hoặc ít hơn và tôi thường gặp khó khăn khi phải quyết định khi nào nên sử dụng cái gì ... Có sự khác biệt lớn nào không?Zend Framework: Plugin điều khiển và người trợ giúp hành động

Trả lời

29

Plugin điều khiển có thể móc vào bất kỳ bộ điều khiển nào trong quá trình định tuyến (preDispatch postDispatch, routeStartup, routeShutdown), giúp chúng cung cấp chức năng hậu trường như thực thi ACL.

Trình trợ giúp hành động dành cho các phân đoạn có thể sử dụng lại nhưng tùy chọn mà trình điều khiển của bạn có thể cần truy cập (redirector, flashMessenger).

Vì vậy, nếu bạn đang tạo một đoạn mã có thể sử dụng lại mà luôn luôn cần phải thực thi chính nó sau đó sử dụng một plugin điều khiển, nếu không bạn có thể muốn có một người trợ giúp hành động.

+8

Chỉ cần lưu ý rằng bộ điều khiển hành động cũng có thể tự thực thi vì chúng có móc preDispatch() và postDispatch(). ActionHelperBroker được sử dụng để kiểm soát điều này. –

14

Bạn có thể nghĩ về nó theo cách này:

  • người giúp đỡ hành động được sử dụng để thêm các phương pháp để điều khiển.
  • Plugin bộ điều khiển được sử dụng để thêm định tuyến/gửi logic vào bộ điều khiển.

Vì vậy, hãy tự hỏi, tôi có phương pháp mà tôi muốn có thể gọi từ tất cả các hành động trong bộ điều khiển của tôi không? Hay tôi cần thêm logic vào quá trình định tuyến/gửi đi.

Bạn cũng có thể xem qua số Built in Action Helpers.

2

Người trợ giúp hành động cũng có quyền truy cập đối tượng điều khiển thực tế đang được thực thi. Plugin điều khiển chỉ có quyền truy cập vào FrontController, và do đó chỉ có tên bộ điều khiển và hành động.

Việc bạn sử dụng tùy thuộc vào ngữ cảnh bạn cần. Nếu bạn cần truy cập vào một đối tượng xem được gắn với một bộ điều khiển, ví dụ, bạn sẽ muốn có một Trình trợ giúp hành động.

6

Một bức tranh để minh họa sự khác biệt giữa các plugin và người trợ giúp hành động: ZF Sequence Flow

0

Cũng cần chú ý rằng, trong quá trình vòng đời front controller, các plugin có được sự kiểm soát (hoặc gọi) đầu tiên so với những người giúp đỡ hành động.

Các vấn đề liên quan