Answers:
实际上没有必要返回的实例\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
所有这些类都将由框架处理。