Sử dụng lớp nhà máy trang trong magento2


19

Mục đích hiển thị trang mô-đun tùy chỉnh trong Magento2 bằng cách sử dụng \Magento\Framework\View\Result\PageFactorylớp nhà máy kết quả được chèn vào hàm tạo và làm cho trang hiển thị

$resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);

thay vì thực hiện những kiểu hiển thị dưới đây giống như trong cách tiếp cận Magento 1.x

$this->_view->loadLayout();

$this->_view->renderLayout();

Câu trả lời:


16

Trên thực tế không cần thiết phải trả về một thể hiện của \Magento\Framework\View\Result\Page. Dự executekiến sẽ trả về một thể hiện của một lớp thực hiện giao diện \Magento\Framework\Controller\ResultInterface.

\Magento\Framework\View\Result\Pagechỉ là một sự trở lại có thể.
Lợi nhuận khác có thể là

  • \Magento\Framework\Controller\Result\Redirect
  • \Magento\Framework\Controller\Result\Raw
  • \Magento\Framework\View\Result\Layout
  • \Magento\Framework\Controller\Result\Forward
  • \Magento\Framework\Controller\Result\Json

và có thể có những người khác.
hãy nhìn vào phương pháp này Magento\Framework\App\Action\Action::dispatch().
Điều này sẽ trả về một thể hiện \Magento\Framework\Controller\ResultInterfacevà dựa trên kết quả các hành động khác nhau được thực hiện, một lần nữa bằng cách gọi các phương thức được khai báo trong ResultInterface. Phương thức
này dispatchgọi $result = $this->execute();đó là executephương thức từ hành động của bộ điều khiển. Vì vậy, tôi đoán đây là sự nhất quán và để dễ dàng giới thiệu một hành vi khác cho hành động của bộ điều khiển. Bạn chỉ cần thêm một lớp mới thực hiện ResultInterfacevà tất cả sẽ được xử lý bởi khung công tác.


3

Tôi tin rằng ý tưởng đó đã trả về dữ liệu / mô hình từ các bộ điều khiển, nhưng việc triển khai hiện tại có vẻ lạ đối với tôi.

Cá nhân tôi hy vọng rằng bộ điều khiển không trả lại bất cứ điều gì, có thể chỉ cần chuyển hướng đến url khác. Để bố trí trang cần thêm tuyến trên với trang này sẽ có sẵn.

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-login">
     <route url="login"/>
    <body>
    </body>
</page>

JSON sẽ có sẵn từ phần còn lại api

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.