Фактично не потрібно повертати екземпляр \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
і все це буде оброблятися рамкою.