Magento2'de sayfa fabrika sınıfının kullanımı


19

Oluşturucuya \Magento\Framework\View\Result\PageFactoryenjekte edilen sonuç fabrika sınıfını kullanarak Magento2'deki özel modül sayfasını görüntülemenin ve sayfanın görüntülenmesini sağlama amacı nedir?

$resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);

Magento 1.x yaklaşımında olduğu gibi aşağıdaki ekran türlerini yapmak yerine

$this->_view->loadLayout();

$this->_view->renderLayout();

Yanıtlar:


16

Aslında bir örneğini döndürmek gerekli değildir \Magento\Framework\View\Result\Page. Bu executeöğenin arabirimi uygulayan bir sınıf örneği döndürmesi beklenir \Magento\Framework\Controller\ResultInterface.

\Magento\Framework\View\Result\Pageolası bir dönüş.
Diğer olası getiriler

  • \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

ve başkaları da olabilir.
yönteme bir göz atın Magento\Framework\App\Action\Action::dispatch().
Bu, bir örneğini döndürmeli \Magento\Framework\Controller\ResultInterfaceve sonuca dayanarak, yine ResultInterface.
Bu dispatchyöntem , denetleyici eyleminden yöntem $result = $this->execute();olan yöntemi çağırır execute. Sanırım bu tutarlılık ve bir denetleyici eylemi için farklı bir davranış getirmeyi kolaylaştırmak içindir. Sadece uygulayan yeni bir sınıf eklemeniz gerekir ResultInterfaceve hepsi çerçeve tarafından ele alınacaktır.


3

Fikir denetleyicilerden veri / model dönüş olduğuna inanıyorum, ancak mevcut uygulama benim için de garip görünüyor.

Şahsen ben denetleyicilerin bir şey iade etmemesini bekliyorum, belki sadece diğer url'ye yönlendirirsiniz. Sayfa düzeni ihtiyacı için bu sayfa ile rota ekleyecektir kullanılabilir.

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

JSON geri kalan api'den satışa sunulacak

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.