2012-04-30 37 views
13

đôi khi tôi được điều sai lầm bởi trong ba phương pháp dựng hình:Yii sự khác biệt giữa các chức năng render

  • Controller::render()
  • Controller::renderPartial()
  • Controller::renderFile()

Xin vui lòng bạn có thể giải thích. Cảm ơn bạn!

+0

@Paystey Chỉnh sửa tuyệt vời^_^Cảm ơn bạn –

Trả lời

26

render() thường được dùng để biểu hiện một cái nhìn tương ứng với những gì người dùng thấy như là một "trang" trong ứng dụng của bạn. Đầu tiên nó hiển thị khung nhìn mà bạn đã chỉ định và sau đó hiển thị bố trí cho hành động điều khiển hiện tại (nếu có), đặt kết quả của lần render đầu tiên vào layout. Sau đó, nó thực hiện xử lý đầu ra (lúc này có nghĩa là tự động chèn bất kỳ thẻ <script> cần thiết nào và cập nhật nội dung động) và cuối cùng sẽ xuất kết quả.

renderPartial() thường được sử dụng để hiển thị "trang" của một trang. Sự khác biệt chính từ render() là phương pháp này không không đặt kết quả hiển thị trong bố cục. Theo mặc định, nó cũng không thực hiện xử lý đầu ra, nhưng bạn có thể ghi đè hành vi này bằng tham số $processOutput.

renderFile() là một phương pháp ở mức độ thấp để làm công việc grunt render: nó trích ra các biến dữ liệu trong phạm vi hiện tại và sau đó chạy mã xem. Hai phương thức khác gọi nội bộ này là phương thức này, nhưng thực tế bạn không bao giờ cần tự gọi nó. Nếu bạn làm như vậy, hãy nhớ rằng bạn cần phải vượt qua đường dẫn tệp (không phải đường dẫn chế độ xem).

5

Render file:

sẽ chạy các phương pháp vẽ trên một tập tin được đưa ra với các thiết lập rendering engine. Đây là mức khá thấp trong Yii và chỉ thực sự được sử dụng trong nội bộ hoặc trong các lệnh giao diện điều khiển.

Render phần:

này có bí danh nhất định và chuyển đổi nó thành một đường dẫn tập tin sử dụng tất cả các biến địa phương như bộ điều khiển đang chạy hiện tại và mô-đun và định nghĩa bí danh. Nó sau đó khá nhiều chỉ sử dụng tập tin render.

Render:

Đây là sự kết hợp của render partials để làm cho cuộc sống của chúng tôi dễ dàng hơn. Nó sẽ hiển thị bố trí trên contoller hiện đang hoạt động, hoặc được định nghĩa, render tất cả nội dung bên trong nó, xử lý bộ nhớ đệm của render, và xử lý đầu ra cho các kịch bản máy khách.

Hy vọng xóa nó đi.

+0

Tôi muốn thu hút sự chú ý đến bit "lệnh giao diện điều khiển" cho tệp renderFile(). Đó là một cuộc sống tiết kiệm cho tôi. –

2

renderPartial() là thực sự hữu ích cho việc hiển thị các thành phần ssi trong một trang - ví dụ, tiêu đề, footers, widget, vv

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