文章列表


<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento 2的对象管理器是一个依赖注入容器,用于创建和管理对象实例。它是Magento 2的核心组件之一,用于解决类之间的依赖关系。</p><p>Magento 2的对象管理器实现了PSR-11容器接口,因此它可以与其他符合该标准的容器库无缝集成。在Magento 2中,对象管理器可以通过以下方式进行访问:</p><pre class="brush:as3;toolbar:false">$objectManager&nbsp;=&nbsp;\Magento\Framework\App\ObjectManager::getInstance();</pre><p>通过这种方式获取对象管理器的实例后,可以使用它来创建对象实例、获取已经创建的对象实例、注入依赖项等操作。下面是一些使用Magento 2对象管理器的示例代码:<br/></p><p><strong>创建对象实例</strong></p><p>使用对象管理器可以方便地创建对象实例,而无需手动实例化类并处理类之间的依赖关系。以下示例代码演示如何使用对象管理器创建Magento\Catalog\Api\ProductRepositoryInterface接口的实例:</p><pre class="brush:as3;toolbar:false">$productRepository&nbsp;=&nbsp;$objectManager-&gt;get(\Magento\Catalog\Api\ProductRepositoryInterface::class);</pre><p>获取已经创建的对象实例<br/></p><p>Magento 2对象管理器是单例模式的,因此一旦创建了对象实例,就可以在后续的代码中使用相同的实例。以下示例代码演示如何使用对象管理器获取已经创建的Magento\Catalog\Model\Product实例:</p><pre class="brush:as3;toolbar:false">$product&nbsp;=&nbsp;$objectManager-&gt;get(\Magento\Catalog\Model\Product::class);</pre><p>注入依赖项<br/></p><p>使用对象管理器可以方便地注入类之间的依赖项,而无需手动解决依赖关系。以下示例代码演示如何使用对象管理器注入Magento\Catalog\Api\ProductRepositoryInterface接口作为构造函数的依赖项:</p><pre class="brush:as3;toolbar:false">class&nbsp;MyCustomClass { &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$productRepository; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct(\Magento\Catalog\Api\ProductRepositoryInterface&nbsp;$productRepository) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;productRepository&nbsp;=&nbsp;$productRepository; &nbsp;&nbsp;&nbsp;&nbsp;} } $myCustomClass&nbsp;=&nbsp;$objectManager-&gt;create(MyCustomClass::class);</pre><p>在上面的示例中,我们使用对象管理器创建了一个MyCustomClass实例,并将Magento\Catalog\Api\ProductRepositoryInterface作为构造函数的依赖项注入到该实例中。</p><p>需要注意的是,虽然对象管理器在某些情况下非常方便,但是过度使用它可能会导致代码变得难以维护。在实现依赖注入时,最好尽可能地使用构造函数注入,以提高代码的可读性和可维护性。</p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento 2有两种类型的API:公共API和Web API。公共API提供了一组用于开发Magento 2扩展的PHP接口。而Web API则允许外部应用程序与Magento 2进行通信。</p><p><strong>公共API</strong></p><p>公共API是Magento 2的一组PHP接口,允许开发人员访问Magento 2的内部功能和数据。这些接口使用Magento\Framework\Api接口进行定义。下面是一个简单的示例代码,演示如何使用Magento 2的公共API获取产品数据:</p><pre class="brush:as3;toolbar:false">&lt;?php use&nbsp;Magento\Framework\Api\SearchCriteriaBuilder; use&nbsp;Magento\Catalog\Api\ProductRepositoryInterface; class&nbsp;Product { &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$productRepository; &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$searchCriteriaBuilder; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProductRepositoryInterface&nbsp;$productRepository, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchCriteriaBuilder&nbsp;$searchCriteriaBuilder &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;productRepository&nbsp;=&nbsp;$productRepository; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;searchCriteriaBuilder&nbsp;=&nbsp;$searchCriteriaBuilder; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;getProductById($productId) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$searchCriteria&nbsp;=&nbsp;$this-&gt;searchCriteriaBuilder-&gt;addFilter(&#39;entity_id&#39;,&nbsp;$productId)-&gt;create(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$product&nbsp;=&nbsp;$this-&gt;productRepository-&gt;getList($searchCriteria)-&gt;getFirstItem(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$product; &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p><strong>Web API</strong></p><p>Web API允许外部应用程序与Magento 2进行通信。这些API使用REST或SOAP协议,通过HTTP请求和响应进行通信。Web API中的所有请求和响应都是XML或JSON格式的。下面是一个简单的示例代码,演示如何使用Magento 2的Web API创建一个产品:</p><pre class="brush:as3;toolbar:false">&lt;?php $token&nbsp;=&nbsp;&#39;YOUR_API_TOKEN&#39;; $url&nbsp;=&nbsp;&#39;http://magento2.local/rest/V1/products&#39;; $productData&nbsp;=&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&#39;product&#39;&nbsp;=&gt;&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;sku&#39;&nbsp;=&gt;&nbsp;&#39;test-product&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;name&#39;&nbsp;=&gt;&nbsp;&#39;Test&nbsp;Product&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;price&#39;&nbsp;=&gt;&nbsp;10.00, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;status&#39;&nbsp;=&gt;&nbsp;1, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;visibility&#39;&nbsp;=&gt;&nbsp;4, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;type_id&#39;&nbsp;=&gt;&nbsp;&#39;simple&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;attribute_set_id&#39;&nbsp;=&gt;&nbsp;4, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#39;weight&#39;&nbsp;=&gt;&nbsp;1 &nbsp;&nbsp;&nbsp;&nbsp;] ]; $ch&nbsp;=&nbsp;curl_init(); curl_setopt($ch,&nbsp;CURLOPT_URL,&nbsp;$url); curl_setopt($ch,&nbsp;CURLOPT_POST,&nbsp;1); curl_setopt($ch,&nbsp;CURLOPT_POSTFIELDS,&nbsp;json_encode($productData)); curl_setopt($ch,&nbsp;CURLOPT_HTTPHEADER,&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;&#39;Content-Type:&nbsp;application/json&#39;, &nbsp;&nbsp;&nbsp;&nbsp;&#39;Authorization:&nbsp;Bearer&nbsp;&#39;.$token ]); curl_setopt($ch,&nbsp;CURLOPT_RETURNTRANSFER,&nbsp;1); $response&nbsp;=&nbsp;curl_exec($ch); $httpCode&nbsp;=&nbsp;curl_getinfo($ch,&nbsp;CURLINFO_HTTP_CODE); curl_close($ch); if&nbsp;($httpCode&nbsp;==&nbsp;200)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$productId&nbsp;=&nbsp;json_decode($response,&nbsp;true)[&#39;id&#39;]; }</pre><p>在上面的示例中,我们使用cURL库向Magento 2的Web API发送一个创建产品的请求。请求中包含了产品的名称、价格、SKU等信息。请求中还包含了一个授权令牌,用于验证请求的身份。如果请求成功,我们将能够从响应中获取新创建产品的ID。</p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento 2是一个基于PHP的现代化电子商务平台,它包含了许多不同类型的组件,以满足各种不同的商业需求。下面是几种常见的Magento 2组件类型及其相关代码示例。</p><p>模块(Module)</p><p>模块是Magento 2中的基本组件,它们是按功能划分的、可重用的代码块。每个模块都包含了自己的视图、控制器、模型、布局等组件。下面是一个简单的示例代码,演示如何创建一个Magento 2模块:</p><p></p><pre class="brush:as3;toolbar:false">&lt;?php use&nbsp;Magento\Framework\Component\ComponentRegistrar; ComponentRegistrar::register( &nbsp;&nbsp;&nbsp;&nbsp;ComponentRegistrar::MODULE, &nbsp;&nbsp;&nbsp;&nbsp;&#39;Vendor_Module&#39;, &nbsp;&nbsp;&nbsp;&nbsp;__DIR__ ); 控制器(Controller)</pre><p>控制器是Magento 2中处理用户请求的组件。它们接收HTTP请求并响应HTTP响应。下面是一个简单的示例代码,演示如何创建一个Magento 2控制器:</p><pre class="brush:as3;toolbar:false">&lt;?php namespace&nbsp;Vendor\Module\Controller\Index; use&nbsp;Magento\Framework\App\Action\Action; use&nbsp;Magento\Framework\App\Action\Context; use&nbsp;Magento\Framework\View\Result\PageFactory; class&nbsp;Index&nbsp;extends&nbsp;Action { &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;$resultPageFactory; &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;__construct( &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context&nbsp;$context, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PageFactory&nbsp;$resultPageFactory &nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;resultPageFactory&nbsp;=&nbsp;$resultPageFactory; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parent::__construct($context); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;function&nbsp;execute() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;$this-&gt;resultPageFactory-&gt;create(); &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>模型(Model)</p><p>模型是Magento 2中的数据模型,它们负责与数据库交互并提供业务逻辑。下面是一个简单的示例代码,演示如何创建一个Magento 2模型:</p><pre class="brush:as3;toolbar:false">&lt;?php namespace&nbsp;Vendor\Module\Model; use&nbsp;Magento\Framework\Model\AbstractModel; class&nbsp;Product&nbsp;extends&nbsp;AbstractModel { &nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;function&nbsp;_construct() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$this-&gt;_init(&#39;Vendor\Module\Model\ResourceModel\Product&#39;); &nbsp;&nbsp;&nbsp;&nbsp;} }</pre><p>布局(Layout)</p><p>布局是Magento 2中的视图组件,它们定义了页面的结构和内容。每个布局都包含了多个块(Block)组件,这些块可以是HTML、XML、PHP等代码片段。下面是一个简单的示例代码,演示如何创建一个Magento 2布局:</p><pre class="brush:as3;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &lt;page&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xsi:noNamespaceSchemaLocation=&quot;urn:magento:framework:View/Layout/etc/page_configuration.xsd&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;referenceContainer&nbsp;name=&quot;content&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;block&nbsp;class=&quot;Vendor\Module\Block\Product&quot;&nbsp;name=&quot;product&quot;&nbsp;template=&quot;Vendor_Module::product.phtml&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/referenceContainer&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt; &lt;/page&gt;</pre><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 0px; margin-bottom: 1.25em;">在Magento系统中,module.xml文件是一个用于定义模块名称的配置文件,它必须放置在模块或自定义模块目录下的以下文件路径中:magento/app/code/namespace/modulename/etc/module.xml。该文件定义了模块的基本信息,如模块的名称、版本号、序列、依赖项等,这些信息对于Magento系统的正确运行至关重要。 module.xml文件还可以用于指定模块的路由、布局、块和插件等方面的配置。此外,Magento系统中的每个模块都可以有一个全局和特定区域的di.xml文件,用于配置依赖项注入(Dependency Injection),以及指定敏感配置设置。</p><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 1.25em; margin-bottom: 1.25em;">在具体实践中,开发者可以将自己编写的插件模块放在 app/code/ 目录下,并按照一定的命名规则创建module.xml文件。例如,一个名为Test的模块的命名空间为Plugin,则它的文件路径应为app/code/Plugin/Test/etc/module.xml。创建module.xml文件后,开发者可以在其中指定模块的名称、版本号、依赖项等信息。</p><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 1.25em; margin-bottom: 1.25em;">module.xml文件是Magento系统中重要的配置文件之一,用于定义模块的基本信息和路由、布局、块和插件等方面的配置,确保模块在Magento系统中的正确运行。开发者可以根据Magento规范,创建自己的模块和module.xml文件,并在其中指定相关的配置信息。</p><p>通过定义module.xml文件,可以指定一个模块的名称,版本号和要加载的组件类型,以及与该模块相关的其他信息。以下是一个module.xml文件的示例:</p><pre class="brush:bash;toolbar:false">&lt;?xml&nbsp;version=&quot;1.0&quot;?&gt; &lt;config&nbsp;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&nbsp;xsi:noNamespaceSchemaLocation=&quot;../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd&quot;&gt; &lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;setup_version=&quot;2.0.0&quot;&nbsp;schema_version=&quot;2.0.0&quot;&gt; &lt;sequence&gt; &lt;module&nbsp;name=&quot;Magento_Catalog&quot;/&gt; &lt;/sequence&gt; &lt;module&gt; &lt;/config&gt;</pre><p>在这个例子中,module.xml文件定义了Vendor_Module模块,它需要Magento_Catalog模块,以便加载时按照正确的顺序加载它们. 其中,name属性是模块的名称,setup_version属性是模块的版本号。在sequence节点中,可以定义模块的依赖关系。如果模块需要在其他模块之前加载,可以将这些模块添加到sequence节点中。</p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento是一款流行的电子商务平台,route.xml文件在Magento 2的扩展开发中扮演着重要的角色。在Magento 2中,路由系统的目的是将一个给定的URL路由到相应的控制器上,并执行相应的操作,而route.xml文件就是定义路由的主要文件之一。</p><p>routes.xml文件通过定义store-url、store-code、front-name、controller-name和action-name等参数,来确定URL与控制器的对应关系. 在Magento 2中,routes.xml文件可以存在于模块的etc/frontend和etc/adminhtml文件夹中,用于指定模块的前台和后台路由。<br/></p><p>routes.xml文件是一个XML格式的文件,通常由两个主要的标签,&lt;router&gt;和&lt;route&gt;组成。其中&lt;router&gt;标签指定了路由的类型,通常是standard。 &lt;route&gt;标签用于指定控制器的路径以及路由的frontName, 这个frontName被用作URL路径的一部分,用来表示模块。<br/></p><p>Magento 的路由系统是基于请求 URL 的匹配和处理,它可以将每个请求定向到相应的控制器,并且可以在需要时使用多个控制器。routes.xml 文件是 Magento 中定义路由的主要文件之一,下面是对其配置和说明的一些例子:<br/></p><p>一个简单的前端路由:<br/></p><pre class="brush:bash;toolbar:false">&lt;router&nbsp;id=&quot;standard&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;route&nbsp;frontName=&quot;example&quot;&nbsp;id=&quot;example&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/route&gt; &lt;/router&gt;</pre><p>这段代码定义了一个名为 <span style="color: #ce9178;">&quot;example&quot;</span> 的前端路由,当我们的请求 URL 中包含 <span style="color: #ce9178;">&quot;example&quot;</span> 时,就会匹配到此路由。这个路由的模块名称是 <span style="color: #ce9178;">&quot;Vendor_Module&quot;</span>,它的控制器文件位于 <span style="color: #ce9178;">&quot;Vendor\Module\Controller&quot;</span> 目录下。</p><p>一个带有参数的前端路由:<br/></p><pre class="brush:bash;toolbar:false">&lt;router&nbsp;id=&quot;standard&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;route&nbsp;id=&quot;example&quot;&nbsp;frontName=&quot;example&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;action&nbsp;name=&quot;test&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name=&quot;id&quot;&gt;[0-9]+&lt;/param&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/action&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;/route&gt; &lt;/router&gt;</pre><p>这个路由的名字还是 <span style="color: rgb(206, 145, 120);">&quot;example&quot;</span>,但它有一个名为 <span style="color: rgb(206, 145, 120);">&quot;test&quot;</span> 的动作,这个动作有一个名为 <span style="color: rgb(206, 145, 120);">&quot;id&quot;</span> 的参数,它的值必须是一个数字。例如,当我们请求 URL <span style="color: rgb(206, 145, 120);">&quot;example/test/id/123&quot;</span> 时,它将匹配到此路由,并将参数 <span style="color: rgb(206, 145, 120);">&quot;id&quot;</span> 的值设置为 <span style="color: rgb(206, 145, 120);">&quot;123&quot;</span>。<br/></p><p>一个后台路由:<br/></p><pre class="brush:bash;toolbar:false">&lt;router&nbsp;id=&quot;admin&quot;&gt; &lt;route&nbsp;id=&quot;example&quot;&nbsp;frontName=&quot;example&quot;&gt; &lt;module&nbsp;name=&quot;Vendor_Module&quot;&nbsp;/&gt; &lt;/route&gt; &lt;/router&gt;</pre><p>这个路由的类型是 <span style="color: #ce9178;">&quot;admin&quot;</span>,这意味着它是用于后台的。和前面的例子一样,它的模块名称是 <span style="color: #ce9178;">&quot;Vendor_Module&quot;</span>,控制器文件位于 <span style="color: #ce9178;">&quot;Vendor\Module\Controller\Adminhtml&quot;</span> 目录下。当我们请求 URL <span style="color: #ce9178;">&quot;admin/example/index/index&quot;</span> 时,它将匹配到此路由。</p><p><br/></p><p>总结,route.xml文件的作用是帮助Magento系统将URL路由到对应的控制器,从而实现系统的功能。开发人员可以通过定义自定义的routes.xml文件,来指定URL的路由规则和前缀。</p><p><br/></p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento 系统中的 env.php 文件是 Magento 的配置文件之一,它存储了 Magento 系统中的一些关键配置信息。下面是 env.php 文件中的一些常见配置选项以及它们的作用:</p><p><br/></p><p>db:数据库连接信息,包括数据库名称、用户名、密码、主机名和端口号等。</p><p>cache:缓存配置,指定了 Magento 使用的缓存类型,包括文件、数据库、Redis 等等。</p><p>session:会话配置,指定了 Magento 的会话存储方式,包括文件、数据库、Redis 等等。</p><p>crypt:密码加密配置,指定了 Magento 使用的密码加密算法。</p><p>resource:资源配置,指定了 Magento 使用的资源模型、实体模型以及数据表前缀等信息。</p><p>x-frame-options:安全配置,指定了 Magento 如何设置 X-Frame-Options 标头,用于防止点击劫持攻击。</p><p>MAGE_MODE:Magento 模式配置,指定了 Magento 当前运行的模式,包括开发模式、生产模式等等。</p><p><br/></p><p>这些配置选项可以通过在 env.php 文件中进行设置来调整 Magento 的行为。如果你需要更改这些配置选项,可以在编辑 env.php 文件后重新加载 Magento 系统。注意,在更改 env.php 文件之前请备份它,以便在出现问题时能够恢复系统。</p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento是一个流行的开源电子商务平台。它提供了许多功能,包括订单管理、商品管理、促销和营销、支付、发货和物流等。Magento还提供了定时任务的功能,用于执行各种自动化任务。下面是Magento系统中的几个定时任务:</p><p>Catalog Price Rule: 定时计算和更新目录价格规则,以确保定价的准确性和一致性。该任务默认每天执行一次。</p><p>Customer Alerts: 发送提醒通知,例如当商品价格下调或商品重新上架时。该任务默认每小时执行一次。</p><p>Newsletters: 将定期发送的电子邮件添加到队列中。该任务默认每小时执行一次。</p><p>Google Shopping: 导出商品数据到Google购物,以帮助推广您的产品。该任务默认每天执行一次。</p><p>Currency Rates: 定期更新货币汇率。该任务默认每小时执行一次。</p><p>Catalog Product Rule: 定时计算和更新目录产品规则,以确保商品的准确性和一致性。该任务默认每天执行一次。</p><p>Log Cleaning: 定期清理Magento日志。该任务默认每天执行一次。</p><p><br/></p><p>以上是Magento系统中的一些定时任务,定时任务的执行时间可以根据需要进行修改。这些任务可以提高电子商务平台的效率和性能,并减轻人工干预的工作负担。</p><p><br/><br/><br/><br/></p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>Magento 是一款流行的开源电子商务平台,通过使用命令可以方便地管理 Magento 的不同方面,下面是 Magento 中常用的命令以及它们的用法:</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;setup:upgrade</pre><p>用于升级 Magento 系统,如果你添加了新的模块或者进行了其它的配置变更,就需要运行这个命令来使变更生效。</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;setup:static-content:deploy</pre><p>用于将静态内容编译为生产模式的文件,包括样式表、脚本等等。这个命令通常在生产环境中使用。</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;cache:clean</pre><p>用于清空 Magento 缓存,这是在进行系统配置更改后常常需要执行的命令。</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;cache:flush</pre><p>用于刷新 Magento 缓存,将清空所有缓存并重建它们。</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;indexer:reindex</pre><p>用于重建 Magento 的索引,通常在你更改了产品或者类别数据后需要执行此命令。</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;setup:di:compile</pre><p>用于编译 Magento 的依赖注入容器,通常在生产环境中使用。</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;maintenance:enable</pre><p>用于启用维护模式,这会让用户看到一个定制的页面,并且不能进行交易。在进行大规模更改或者系统维护时通常需要启用维护模式。</p><pre class="brush:bash;toolbar:false">bin/magento&nbsp;maintenance:disable</pre><p>用于禁用维护模式,这会恢复站点的正常运行。<br/></p><p><br/></p><p>以上是 Magento 常用的一些命令,它们可以帮助你方便地管理 Magento 平台。在使用这些命令时,请务必在正确的环境下运行,例如在开发环境下运行 bin/magento setup:upgrade 命令以避免在生产环境中产生问题。</p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 0px; margin-bottom: 1.25em;">Magento是一种电子商务平台,它使用实体-属性-值(EAV)数据模型存储和管理数据。EAV数据模型是一种灵活的数据模型,允许用户动态添加属性并在不同的实体之间共享属性。以下是EAV模型在Magento系统中的优点:</p><ol style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; list-style-position: initial; list-style-image: initial; margin-top: 1.25em; margin-bottom: 1.25em; padding: 0px 0px 0px 1rem; counter-reset: item 0; display: flex; flex-direction: column;" class=" list-paddingleft-2"><li><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 0px; margin-bottom: 0px;">灵活性:EAV模型提供了高度的灵活性,可以在运行时添加新属性,而无需修改表结构。这使得Magento的扩展性非常强大,用户可以轻松地添加新产品类型或自定义属性,并根据需要自定义产品属性。</p></li><li><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 0px; margin-bottom: 0px;">维护性:EAV模型可以减少数据库表的数量,因此更易于维护。相反,如果每个实体类型都使用自己的表,则可能需要创建大量的表,使数据库更难以管理。</p></li><li><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 0px; margin-bottom: 0px;">重用性:EAV模型允许实体类型共享属性,从而提高了数据的重用性。在Magento中,可以使用相同的属性来描述不同的实体,例如商品和客户可以共享国家属性。</p></li></ol><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 1.25em; margin-bottom: 0px;">总之,EAV模型是一种灵活、易于维护和高度可重用的数据模型,这使得Magento的扩展性非常强大。它允许用户动态添加属性,而不必修改表结构,并且可以在不同的实体类型之间共享属性。</p><p><br/></p>

<h5 style="color:red;">系统学习magento二次开发,推荐小册:<a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank">《Magento中文全栈二次开发 》</a></h5> <div class="image-container"> <p> <a style="color:blue;" href="https://www.maxiaoke.com/manual/magento_cn_dev.html" target="_blank"> <img src="https://www.maxiaoke.com/uploads/images/20230218/bb9c82995c24d1105676e02f373755f5.jpg" alt="Magento中文全栈二次开发"> </a> </p> </div> <div class="text-container" style="font-size:14px; color:#888"> <p>本小册面向Magento2以上版本,书代码及示例兼容magento2.0-2.4版本。涵盖了magento前端开发,后端开发,magento2主题,magento2重写,magento2 layout,magento2控制器,magento2 block等相关内容,带领您成为magento开发技术专家。</p> </div> <hr><p>安装 Magento 可以通过 Docker 环境来完成,下面是安装的步骤:</p><p>安装 Docker 和 Docker Compose</p><p>首先需要在你的机器上安装 Docker 和 Docker Compose。</p><p>创建 Docker Compose 文件</p><p>创建一个 docker-compose.yml 文件,将以下代码粘贴到文件中:</p><pre class="brush:bash;toolbar:false">services: &nbsp;&nbsp;&nbsp;&nbsp;web: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;nginx:alpine &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ports: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&quot;80:80&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumes: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;./src:/var/www/html &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;./nginx/default.conf:/etc/nginx/conf.d/default.conf &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;depends_on: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;php &nbsp;&nbsp;&nbsp;&nbsp;php: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;php:7.2-fpm-alpine &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;volumes: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;./src:/var/www/html &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;./php/php.ini:/usr/local/etc/php/php.ini db: &nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;mysql:5.7 &nbsp;&nbsp;&nbsp;&nbsp;volumes: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;./mysql:/var/lib/mysql &nbsp;&nbsp;&nbsp;&nbsp;environment: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_ROOT_PASSWORD:&nbsp;magento2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_DATABASE:&nbsp;magento2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_USER:&nbsp;magento2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MYSQL_PASSWORD:&nbsp;magento2 &nbsp;&nbsp;&nbsp;&nbsp;phpmyadmin: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;image:&nbsp;phpmyadmin/phpmyadmin &nbsp;&nbsp;&nbsp;&nbsp;ports: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&quot;8080:80&quot; &nbsp;&nbsp;&nbsp;&nbsp;environment: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PMA_HOST:&nbsp;db</pre><p><br/><br/></p><p>创建 Magento 文件夹</p><p>在当前目录下创建一个名为 src 的文件夹,这个文件夹将包含 Magento 代码和文件。</p><p>下载 Magento</p><p>在 src 文件夹中下载并解压缩 Magento 安装包。</p><p>编辑 Nginx 配置文件</p><p>在当前目录下创建一个名为 nginx 的文件夹,并在该文件夹下创建一个名为 default.conf 的文件,将以下代码粘贴到文件中:</p><pre class="brush:bash;toolbar:false">server&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;listen&nbsp;80; &nbsp;&nbsp;&nbsp;&nbsp;index&nbsp;index.php; &nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;magento.local; &nbsp;&nbsp;&nbsp;&nbsp;error_log&nbsp;&nbsp;/var/log/nginx/error.log; &nbsp;&nbsp;&nbsp;&nbsp;access_log&nbsp;/var/log/nginx/access.log; &nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;/var/www/html; location&nbsp;/&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;try_files&nbsp;$uri&nbsp;$uri/&nbsp;/index.php?$args; } location&nbsp;~&nbsp;\.php$&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;try_files&nbsp;$uri&nbsp;=404; &nbsp;&nbsp;&nbsp;&nbsp;fastcgi_pass&nbsp;php:9000; &nbsp;&nbsp;&nbsp;&nbsp;fastcgi_index&nbsp;index.php; &nbsp;&nbsp;&nbsp;&nbsp;fastcgi_buffers&nbsp;16&nbsp;16k; &nbsp;&nbsp;&nbsp;&nbsp;fastcgi_buffer_size&nbsp;32k; &nbsp;&nbsp;&nbsp;&nbsp;fastcgi_param&nbsp;SCRIPT_FILENAME&nbsp;$document_root$fastcgi_script_name; &nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;fastcgi_params; } }</pre><p><br/></p><p>启动 Docker</p><p>在终端中进入到 docker-compose.yml 文件所在的目录,并执行以下命令来启动 Docker:</p><pre class="brush:bash;toolbar:false">docker-compose&nbsp;up&nbsp;-d</pre><p><br/></p><p>安装 Magento</p><p>在浏览器中访问 http://localhost,将跳转到 Magento 的安装页面。按照提示进行安装,并在 Database Server Host 中填写 db,在 Database Server Username 和 Database Server Password 中填写 magento2,在 Database Name 中填写 magento2。</p><p><br/></p><p>完成以上步骤后,Magento 将安装在 Docker 中,并可通过 http://localhost 访问。</p><p style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x:0; --tw-border-spacing-y:0; --tw-translate-x:0; --tw-translate-y:0; --tw-rotate:0; --tw-skew-x:0; --tw-skew-y:0; --tw-scale-x:1; --tw-scale-y:1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness:proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width:0px; --tw-ring-offset-color:#fff; --tw-ring-color:rgba(59,130,246,0.5); --tw-ring-offset-shadow:0 0 transparent; --tw-ring-shadow:0 0 transparent; --tw-shadow:0 0 transparent; --tw-shadow-colored:0 0 transparent; --tw-blur: ; --tw-brightness: ; --tw-contrast: ; --tw-grayscale: ; --tw-hue-rotate: ; --tw-invert: ; --tw-saturate: ; --tw-sepia: ; --tw-drop-shadow: ; --tw-backdrop-blur: ; --tw-backdrop-brightness: ; --tw-backdrop-contrast: ; --tw-backdrop-grayscale: ; --tw-backdrop-hue-rotate: ; --tw-backdrop-invert: ; --tw-backdrop-opacity: ; --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; margin-top: 0px; margin-bottom: 1.25em; color: rgb(55, 65, 81); font-family: Söhne, ui-sans-serif, system-ui, -apple-system, &quot;Segoe UI&quot;, Roboto, Ubuntu, Cantarell, &quot;Noto Sans&quot;, sans-serif, &quot;Helvetica Neue&quot;, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Noto Color Emoji&quot;; white-space: pre-wrap; background-color: rgb(247, 247, 248);"><br/></p>