Використання фабричного класу сторінок у magento2


19

Яка мета візуалізації сторінки користувальницького модуля в Magento2 за допомогою результату заводського \Magento\Framework\View\Result\PageFactoryкласу, введеного в конструктор та змушення сторінки відображатися

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

замість того, щоб робити нижче наведений вид дисплея, який такий же, як у Magento 1.x підході

$this->_view->loadLayout();

$this->_view->renderLayout();

Відповіді:


16

Фактично не потрібно повертати екземпляр \Magento\Framework\View\Result\Page. execute, Як очікується, повертає екземпляр класу , який реалізує інтерфейс \Magento\Framework\Controller\ResultInterface.

\Magento\Framework\View\Result\Pageце лише одне можливе повернення.
Інші можливі прибутки є

  • \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

а можуть бути й інші.
погляньте на метод Magento\Framework\App\Action\Action::dispatch().
Це повинно повернути екземпляр \Magento\Framework\Controller\ResultInterfaceі на основі результату вжити різних дій, знову ж таки викликаючи методи, оголошені в ResultInterface.
Цей dispatchметод викликає, $result = $this->execute();який є executeметодом дії контролера. Тож я думаю, що це для послідовності та полегшення введення іншої поведінки для дії контролера. Вам просто потрібно додати новий клас, який реалізується, ResultInterfaceі все це буде оброблятися рамкою.


3

Я вважаю, що ідея була поверненням даних / моделей з контролерів, але поточна реалізація виглядає і для мене дивно.

Я особисто сподіваюся, що контролери нічого не повернуть, можливо, просто переспрямують на інший URL. До макета сторінки потрібно додати маршрут на цій сторінці.

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

JSON буде доступний з відпочинку api

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.