magento2에서 페이지 팩토리 클래스 사용


19

\Magento\Framework\View\Result\PageFactory생성자에 삽입 된 결과 팩토리 클래스를 사용하여 Magento2에서 사용자 정의 모듈 페이지를 렌더링 하고 페이지를 표시 하는 목적은 무엇입니까?

$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();은 IS execute컨트롤러 액션에서 방법. 따라서 이것은 일관성을 유지하고 컨트롤러 동작에 대해 다른 동작을 쉽게 도입 할 수 있도록합니다. 구현하는 새 클래스를 추가하기 만하면 ResultInterface프레임 워크에서 모두 처리됩니다.


3

아이디어는 컨트롤러에서 데이터 / 모델을 반환한다고 생각하지만 현재 구현은 나에게도 이상하게 보입니다.

개인적으로 나는 컨트롤러가 아무것도 반환하지 않고 다른 URL로 리디렉션 할 것으로 기대합니다. 페이지 레이아웃을 추가하려면이 페이지에서 경로를 추가해야합니다.

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

나머지 API에서 JSON 사용 가능

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.