การใช้คลาสโรงงานใน magento2


19

อะไรคือจุดประสงค์ของการแสดงผลหน้าโมดูลที่กำหนดเองใน Magento2 โดยใช้\Magento\Framework\View\Result\PageFactoryคลาสโรงงานผลลัพธ์ที่แทรกไว้ในตัวสร้างและทำให้หน้าแสดง

$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\ResultInterfaceResultInterface
dispatch$result = $this->execute();executeResultInterface


3

ฉันเชื่อว่าความคิดนั้นคือการส่งคืนข้อมูล / รุ่นจากคอนโทรลเลอร์ แต่การนำไปใช้ในปัจจุบันก็ดูแปลกสำหรับฉันเช่นกัน

โดยส่วนตัวฉันคาดหวังว่าผู้ควบคุมจะไม่ส่งคืนสิ่งใดเลยบางทีอาจเปลี่ยนเส้นทางไปยัง URL อื่น ในการจัดวางหน้าต้องเพิ่มเส้นทางในหน้านี้จะสามารถใช้ได้

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

JSON จะพร้อมใช้งานจากส่วนที่เหลือ API

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.