두 코드가 같은가요?

Aug 27 2020

저는 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를 보여줍니다. 그렇다면 그 차이점은 무엇입니까?`

답변

HamendraSunthwal Aug 27 2020 at 14:53

일반

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를 호출하면 실제로 레이아웃을로드합니다.