2010-06-01 34 views
5

Tôi đã cố gắng tìm cách để nắm bắt đầu ra (xem được hiển thị) của một hành động khác trong hành động hiện tại ... một cái gì đó giống như đệm đầu ra.Ghi lại đầu ra của một hành động khác trong hành động hiện tại?

Kịch bản là tôi cần lưu "ảnh chụp nhanh" của báo cáo. Dữ liệu được sử dụng trong báo cáo luôn thay đổi và vì bất kỳ lý do nào tôi cần thực sự lưu HTML chế độ xem thay vì chỉ là mảng dữ liệu. Tôi đã tạo ra một snapshotAction(), và tôi muốn bằng cách nào đó nắm bắt đầu ra của reportAction riêng biệt() bên trong nó. Tôi không muốn hiển thị reportAction() tới màn hình, tôi muốn nó hiển thị trong hành động hiện tại của tôi, trước khi hành động hoàn tất.

Có cách nào để thực hiện điều này trong ZF không?


đúng trả lời bởi Benedict Cohen dưới đây, nhưng tôi đã không nhận ra nó cho đến khi tôi thấy việc sử dụng này trong danh sách gửi thư lưu trữ ZF: How to render multiple action views?

Tôi đang sử dụng một cái gì đó tương tự:

public function snapshotAction() { 
    $content = $this->view->action('run', 'report'); 
    ...etc... 
} 

Trả lời

7

Có một số view helper called 'action' có thể hữu ích. Bạn chỉ định controller và action và params và nó trả về kết quả. Người trợ giúp tạo ra một vòng lặp công văn mới vì vậy nếu bạn sử dụng nó rất nhiều nó có thể có tác động hiệu suất (tôi không lo lắng về hiệu suất cho đến khi có bằng chứng cho thấy nó gây ra vấn đề).

+0

Một vòng lặp công văn mới là chính xác những gì tôi cần, nhưng tôi muốn một số cách để làm điều đó trong hành động điều khiển, vì hai lý do: Tôi không thực sự muốn render khung nhìn snapshot (lập kế hoạch để làm cho nó một AJAX gọi, xin lỗi tôi quên đề cập đến điều đó), và tôi cũng phải xử lý/lưu chế độ xem báo cáo từ chế độ xem ảnh chụp nhanh, loại phá vỡ quy ước MVC. Nó làm việc mặc dù, chỉ cần bị sốc bạn không thể làm điều đó từ bộ điều khiển. – wizzard

+0

Tôi lấy lại. Tôi không nghĩ rằng bạn có thể gọi điều này từ bộ điều khiển vì lý do nào đó, nhưng nó hoạt động hoàn hảo. Sẽ chỉnh sửa câu hỏi của tôi với mã cụ thể hơn. – wizzard

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