두 코드가 같은가요?
저는 Magento 2를 배우기 시작했고 Controller를 만드는 방법을 몇 가지 읽었습니다.
index.php가 있습니다. Magento 2 _ 개발 쿡북과 웹 사이트에 있습니다.
/** @var \Magento\Framework\View\Result\PageFactory */
protected $resultPageFactory; public function __construct( \Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory
$resultPageFactory ){ $this->resultPageFactory = $resultPageFactory; parent::__construct($context);
}
public function execute()
{
$resultPage = $this->resultPageFactory->create();
return $resultPage;
}
그리고 내가 읽은 또 다른 코드.
class Index extends Action
{
public function execute()
{
$this->_view->loadLayout();
$this->_view->renderLayout();`
두 개의 코드가 동일한 레이아웃 페이지 Magento를 보여줍니다. 그렇다면 그 차이점은 무엇입니까?`
답변
일반
Magento 2에서 모든 컨트롤러 작업은 M1과 달리 무언가를 반환해야합니다. 컨트롤러 작업은 무언가를 출력하거나 리디렉션을 수행합니다. 각 컨트롤러의 실행 메서드 결과는 Magento\Framework\App\FrontController::dispatch()온라인으로 생성되어 $result = $actionInstance->execute();반환됩니다.
반환 된 결과의 유형에 따라 다른 작업이 수행됩니다. 결과는 다음과 같을 수 있습니다.
\ Magento \ Framework \ View \ Result \ Page-실제로 html 렌더링
\ Magento \ Framework \ Controller \ Result \ Redirect-다른 페이지로 리디렉션합니다.
\ Magento \ Framework \ Controller \ Result \ Forward-다른 작업으로 전달 (내부 리디렉션)
\ Magento \ Framework \ Controller \ Result \ Json-json 객체를 반환합니다.
\ Magento \ Framework \ Controller \ Result \ Raw-반환 (문자열)을 지정하는 모든 것을 반환합니다.
특유한
resultPageFactory의 인스턴스이며 \Magento\Framework\View\Result\PageFactory해당 클래스에서 create를 호출하면 \Magento\Framework\View\Result\Page위에서 설명한 인스턴스를 반환합니다 . 이것이 사용되고 결과가 반환되면 작업이 HTML을 반환한다는 것을 의미합니다. 이것은 $this->loadLayout();Magento 1에서 와 비슷한 효과를냅니다 . resultPageFactory 개체에 대해 create를 호출하면 실제로 레이아웃을로드합니다.