Вопрос

Я хочу генеракодицетагкод.Так как это сделать?

Редактировать

в контроллере.

namespace Addon\Faq\Controller\Category;


class View extends \Addon\Faq\Controller\Category
{
    /**
     * @var \Magento\Framework\Controller\Result\ForwardFactory
     */
    protected $_coreRegistry = null;
    /**
     * @var \Magento\Framework\View\Result\PageFactory
     */
    protected $resultPageFactory ;

    /**
     * @param \Magento\Backend\App\Action\Context $context
     * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory
     */
    public function __construct(
        \Magento\Framework\App\Action\Context $context, 
        \Magento\Framework\View\Result\PageFactory $resultPageFactory,
        \Magento\Framework\Registry $registry

    ) {
        $this->resultPageFactory  = $resultPageFactory;
        $this->_coreRegistry = $registry;
        parent::__construct($context);
    }

    /**
     * Product list page
     *
     * @return \Magento\Backend\Model\View\Result\Page
     */
    public function execute()
    {   
        $resultPage = $this->resultPageFactory ->create();
        $blockInstance = $resultPage->getLayout()->getBlock('category.index');

    }
}
.

<Сильная> Макет в Frontend

<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> 
    <body>
        <referenceContainer name="content">
            <block class="Addon\Faq\Block\Faq" name="category.index" template="Addon_Faq::view.phtml"/>               
        </referenceContainer>
    </body>
</page> 
.

Это не заблокировать FAQ

Это было полезно?

Решение

Ваш возврат ничего в вашей команде execute.Возврат результат в вашем контроллере

    $resultPage = $this->resultPageFactory->create();

    return $resultPage;
.

Ваше имя XML должно быть faq_category_view.xml.

Другие советы

Если вы хотите создать интеракцию блока, необходимо добавить в Inject в конструкторе экземпляра \Magento\Framework\View\LayoutFactory

...
protected $layoutFactory;
...
public function __construct(
   ...
   \Magento\Framework\View\LayoutFactory $layoutFactory,
   ...
) {
   ...
   $this->layoutFactory = $layoutFactory;
   ...
}
.

Тогда вы можете создать такое содержание блока:

$this->layoutFactory->create()->createBlock('Block\Class\Here');
.

Если вы хотите получить доступ к блоку, определенному в макете, вам необходимо ввести в конструктор и экземпляр \Magento\Framework\View\Result\PageFactory

...
protected $resultPageFactory;
...
public function __construct(
   ...
   \Magento\Framework\View\Result\PageFactory $resultPageFactory,
   ...
) {
   ...
   $this->resultPageFactory = $resultPageFactory;
   ...
}
.

Тогда вы сможете получить доступ к блоку:

$resultPage = $this->resultPageFactory->create();
$blockInstance = $resultPage->getLayout()->getBlock('block.name.here');
.

  1. Создать блок:

     <?php
        namespace Training\Test\Block;
        class Test extends \Magento\Framework\View\Element\AbstractBlock
        {
           protected function _toHtml() {
             return "<b>Hello world from block!</b>";
           }
        }
    
  2. Создать класс действий:

    <?php
    namespace Training\Test\Controller\Block;
    class Index extends \Magento\Framework\App\Action\Action
       {
       public function execute() {
         $layout = $this->_view->getLayout();
         $block = $layout->createBlock('Training\Test\Block\Test');
         $this->getResponse()->appendBody($block->toHtml());
       }
    }
    

См. Основным кодом:

Шаг 1

https://github.com/magento/magento2/blob/02e0378C33054ACB0CDB8D731D1E2B2C2069BC1B/AP2CODE/Magento/catalog/Controller/adminhtml/category/Edit.php#l26-l34

public function __construct(
    \Magento\Backend\App\Action\Context $context,
    \Magento\Framework\View\Result\PageFactory $resultPageFactory,
) {
    parent::__construct($context);
    $this->resultPageFactory = $resultPageFactory;
}
.

Шаг 2

https://github.com/magento/magento2/blob/02e0378c33054acb0cdb8d731d1e2b2c2069bc1b/app/code/magento/catalog/Controller/adminhtml/category/Edit.php#l69-l70

/** @var \Magento\Backend\Model\View\Result\Page $resultPage */
$resultPage = $this->resultPageFactory->create();
.

Шаг 3

https://github.com/magento/magento2/blob/02e0378c33054acb0cdb8d731d1e2b2c2069bc1b/app/code/magento/catalog/controller/adminhtml/category/edit.php#l119

$block = $resultPage->getLayout()->getBlock('catalog.wysiwyg.js');
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top