magento2中的layouts和block介绍

7天成为Magento系统架构师,现在开始学习Magento全栈开发!

《Magento2.X企业级开发实战》

Magento 2 有一个很好的系统来按布局组织块,在 Magento 2 中更灵活。 您可以通过多种方式进行游戏。

我们想展示开发人员如何处理所有难题(布局块模板和结构),框架 Magento 2 有一个名为 View(“vendor/magento/framework/View”)的组件,它几乎具有管理前端所需的所有类 在后面和字体办公室查看,
您可以通过工厂注入类 Magento\Framework\View\Layout 以获得布局类的实例。 让我们想象一下您在插件中的构造示例是:

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

并在自定义的的方法中使用:

public function resolveLayot()
{
        $this->_layoutFactory
            ->createBlock('\MyVendor\MyModule\Block\Ship',
            'mycustom.block',
            ['data' => ['title' => "My Title"]]) ;
}

让我们将所有这些行转换为 xml :

<block class="MyVendor\MyModule\Block\Ship" name="mycustom.block">
        <arguments>
        <argument translate="true" name="title" xsi:type="string">My Title</argument>
        </arguments>
</block>

您可以添加模板 .phtml 路径,只需将其添加到您的块 MyVendor\MyModule\Block\Ship 中,参数 $template 为:

protected $_template = 'MyVendor_MyModule::template.phtml';

但这里是绝对声明。 你怎么能告诉系统父块或容器在哪里? 简单你应该使用类结构 Magento\Framework\View\Layout\Data\Structure 注入它,你可以使用:

$this->structure->setAsChild('mycustom.block', 'product.info.details') ;

例如,现在您可以在 details.phtml 中以子元素的身份调用。

或者您可以直接使用对象 $this->_layoutFactory 并使用方法 setChild($parentName, $elementName, $alias) 。 您可以在类布局 getBlock($name) getXml() addContainer($name, $label, array $options = [], $parent = ”, $alias = ”) 中使用很多方法。

所以其他信息:“类 Structure 注册所有子父级映射,元素块或容器的类型,以及类布局。使用它来确定元素的类型,方法 isContainer($name) isBlock($name)”。

如无特殊说明或标注,任何个人或组织,复制、转载、采集本站内容请注明:
本文来源于:【Magento中文网】,并添加本文地址链接。
如未按上述操作复制或转载,本站有权追究法律责任。
若本站内容侵犯了原著者的合法权益,可联系我们进行处理。