Questions tagged «magento-2.0»

表示与Magento CE / EE 2.0版相关的问题

4
抽象模型中不建议使用的保存和加载方法
我看到,在Magento的2回购的开发分支的方法load,并save从Magento\Framework\Model\AbstractModel阶级已被弃用。 但是核心中有大量的类可以扩展这个类并使用save和load。 在为实体的CRUD部分创建自己的模块时,我遵循与核心模块相同的准则。 但是,由于不赞成使用这些方法,所以我宁愿为将来做准备。 我应该用什么代替它们?还是我应该扩展其他内容?

4
Magento 2:客户区段/sections.xml如何工作?
最近,我遇到了Magento 2中一个有趣的新概念:客户区 你们中的有些人可能已经注意到sections.xml文件的外观如下: <?xml version="1.0"?> <!-- /** * Copyright © 2016 Magento. All rights reserved. * See COPYING.txt for license details. */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Customer:etc/sections.xsd"> <action name="sales/guest/reorder"> <section name="cart"/> </action> <action name="sales/order/reorder"> <section name="cart"/> </action> </config> 据我了解,这些文件指定了在调用相应操作时应更新哪些客户部分。 我注意到例如Magento/Checkout/etc/frontend/sections.xml以下部分: <action name="checkout/cart/add"> <section name="cart"/> </action> 将产品添加到购物车后,是什么触发了微型购物车更新。 我尝试使用以下etc/frontend/sections.xml文件创建自定义模块以测试该功能: <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" …

11
Magento 2中的自定义CLI命令中的“未设置区域代码”问题
通过更新数据时出现以下错误 CustomerRepositoryInterface [Magento\Framework\Exception\SessionException] Area code not set: Area code must be set before starting a session. [Magento\Framework\Exception\LocalizedException] Area code is not set 以下是我的di.xml档案 <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> <type name="Magento\Framework\Console\CommandList"> <arguments> <argument name="commands" xsi:type="array"> <item name="test1_command" xsi:type="object">Test\Module\Console\Command\Test1Command</item> <item name="test2_command" xsi:type="object">Test\Module\Console\Command\Test2Command</item> </argument> </arguments> </type> </config>

2
Magento事件观察者:Singleton与模型
因此,Magento提供了两种声明观察者的方法。通过<type>在Magento 1.x中指定标签并shared在Magento 2中指定属性,可以选择Singleton和Model(新实例)。 Magento 1种方法。 <events> <event_name> <observers> <unique_observer_name> <type>model|object|singleton|null</type> <class>class/alias_here</class> <method>methdNameHere</method> </unique_observer_name> </observers> </event_name> </events> Magento 2版本: <event name="event_name"> <observer name="unique_observer_name" instance="Class\Name\Here" method="methodNameHere" shared="true|false" /> </event> 因此,对于Magento 1,如果<type>标签是模型或对象,则将使用实例化该类Mage::getModel()。如果是singleton或缺少它,则使用实例化Mage::getSingleton()。 在Magento 2的情况下,如果shared为,false则使用$this->_observerFactory->create() (新实例)实例化该类。 如果shared为true,则使用$this->_observerFactory->get()(单例)实例化。 在这两个版本之间,事件观察者的想法非常相似,但是Magento 1中的大多数观察者都用作单例,因为type缺少标签,而在Magento 2中,大多数(我认为是全部)观察者都具有shared="false"。 我很困惑 什么时候应该使用单例,什么时候应该为观察者使用新的实例? Magento版本(1或2)在这里并不重要。 每个方法(新实例或单例)都可以使用一个简单的用例

3
如何在Magento 2中为自定义模块实施服务合同?
正如所看到的这篇文章:过时的保存和抽象模型load方法的save和load方法,Magento的2已被弃用发展分支。 因此,现在的优良作法是执行服务合同以处理CRUD实体。 为自定义模块实体实施服务合同时,我需要遵循哪些逐步过程? 注意:我知道我的CRUD模型中可能有成千上万种方法,我只是在要求以下明显的方法:http : //devdocs.magento.com/guides/v2.0/extension-dev-guide /service-contracts/design-patterns.html: get save getList delete deleteById

16
Magento 2 CSS和JavaScript无法从正确的文件夹加载
我希望这里的某人可以提供帮助。我试图在Windows 7机器上的WAMP上安装并运行Magento 2,但收效甚微。 在经历了无数种麻烦的事情之后,我现在面临404响应,并且没有样式或JavaScript加载。 规格如下: Magento-CE-2.0.0 +样品 阿帕奇2.4.9 PHP 5.5.12 MySQL 5.6.17 当我在浏览器控制台中查看错误时,试图访问不在pub / static文件夹中的文件。确实加载了“ frontend”文件夹,并且存在大多数文件。但是我注意到一些CSS文件不存在。 在运行PHP deploy命令时 php bin/magento setup:static-content:deploy 在其他帖子中提到的我得到以下错误。我不确定该如何解决? 致命错误:第45行的C:\ wamp \ www \ magento \ vendor \ oyejorge \ less.php \ lib \ Less \ Visitor.php中的134217728字节已用尽内存大小(尝试分配64字节) 任何帮助将不胜感激。 更新 我提高了PHP的内存配额,然后再次运行了php deploy脚本。这次,它没有错误,并已完全执行。但是,仍然存在与上述相同的问题。该网站已加载,但每次尝试加载任何页面或资产的尝试都会导致未应用样式的404页面找不到错误。 请在下方查看Chrome检查器中的错误


5
为什么不能在Magento 2上切换回默认模式?
因此,在使用以下命令在Magento 2项目上进行开发时,我已切换到开发人员模式: php bin/magento deploy:mode:set developer 很好,我收到了此消息,并成功开发了网站: 当前应用模式:开发人员。 由于某些原因,我想回到此default模式只是为了检查此模式下网站的行为。老实说,没有具体原因,我只想切换回此模式。 所以我运行了以下命令: php bin/magento deploy:mode:set default 但是我得到了这个奇怪的错误,没有进一步的解释: Cannot switch into given mode "default" 我检查了以下处理模式设置的文件,Magento/Deploy/Console/Command/SetModeCommand.php这是我发现的内容: switch($toMode) { case State::MODE_DEVELOPER: $modeController->enableDeveloperMode(); break; case State::MODE_PRODUCTION: if ($skipCompilation) { $modeController->enableProductionModeMinimal(); } else { $modeController->enableProductionMode(); } break; default: throw new LocalizedException(__('Cannot switch into given mode "%1"', $toMode)); …

3
Magento 2:互动之前/前后/之后的插件
在Magento 2中,当您创建“周围”插件时 public function aroundRenderResult( \Magento\Framework\Controller\ResultInterface $subject, \Closure $proceed, ResponseHttp $response ) { //... $proceed($response); //... } 您可以继续进行下一个插件,最终通过调用/调用传入的$proceed方法来调用实际的原始方法。这是一种常见的设计模式,通常在PHP Frameworks中间件实现中看到。 但是,它确实给实现细节带来了一些混乱。特别 如果除之外aroundPlugin,对象/类还定义了before或after插件,它们何时相对于周围的插件链触发? 即所有之前的方法会在所有周围的插件方法触发之前触发吗?或插件,然后将只火最终,实际前实际方法火灾? 我要跟踪的具体问题是,当Magento处于全页缓存模式时,我似乎无法获得与Magento 2前端控制器的调度方法相连的插件。全页缓存由不调用的环绕插件操作$proceed($response)。我已经尝试研究这些插件的一些代码,并且发现系统很难在不知道插件打算如何工作的情况下进行推理。 即- 在此特定实例中,开发文档页面上的描述似乎不准确。尚不清楚文档是否错误,或者这是最近引入的错误,是否是边缘情况,或者我的插件配置是否错误。 是否有人通过直接观察或文化知识知道这种优先次序应该如何起作用?

2
Magento2如何生成特定的ExtensionFactory和ExtensionAttributeInterface?
我想使用扩展属性来解决问题,例如引用项目。 使用像Magento 1这样的设置类向这样的实体添加自定义属性没有问题,这不是这个问题。 现在,当我想公开由扩展程序通过实体API添加的属性作为扩展属性时,魔术使我不知所措。 更新:我知道常规工厂是如何生成的。这个问题是关于特殊工厂的,这些工厂为生成的扩展属性接口实例化生成的实现。 这是我要使其正常工作所采取的步骤。我要添加这些内容,因此无论是谁尝试回答,都无需赘述。 我的问题是如何或为何它的工作原理。 通过实体API公开扩展属性的步骤: 创建一个etc/extension_attributes.xml将属性添加到实体接口的 创建一个插件以将属性值添加到实体ExtensionAttributes实例。 为了做第二点,ExtensionAttributes需要实体实例。因此,插件依赖于工厂,对象管理器通过DI提供该工厂。 对于报价项目Magento\Quote\Api\Data\CartItemExtensionFactory,必须使用示例。 我猜想工厂的类型一定是引发魔力的触发器。 然后,Magento \Magento\Quote\Api\Data\CartItemExtensionInterface用所有扩展属性的设置器和获取器生成匹配接口。 但是,它似乎并未为该接口生成具体的实现。至少,PHPStorm没有看到它。 Magento如何收集生成类所需的信息?如何在具体实例上调用生成的接口方法?它是仅在内存中生成的类吗? 我很高兴它能奏效,但这并不能令人满意。Magentos使用扩展自动创建的属性的能力是其成功的关键因素。作为模块开发人员,我相信我需要对整个过程有透彻的了解。 如果我有时间,我自己会自己研究一下,但是我希望能得到一个解释。 更新2:花一点时间阅读\Magento\Framework\Api\Code\Generator\ExtensionAttributesInterfaceGenerator和阅读\Magento\Framework\Api\Code\Generator\ExtensionAttributesGenerator。现在我至少有一个大概的想法。如果没有人击败我,我将在某一时间写一个完整的过程的描述,因为我认为这将是一个有用的参考。

14
Magento 2允许的内存耗尽错误编译代码
添加模块时出现错误。 请重新运行Magento编译命令 所以我在命令下运行,但在从根目录运行命令时也显示以下错误, php magento设置:di:compile Compilation was started. %message% 0/7 [>---------------------------] 0% 1 sec 37.0 MiB%message% 0/7 [> ---------------------------] 0% 1 sec 37.0 MiBProxies code generation... 0/7 [ >---------------------------] 0% 1 sec 37.0 MiB Proxies code generation... 1/7 [====>-----------------------] 14% 47 secs 43.5 MiB Repositories code generation... 1/7 [====>-----------------------] 14% …

4
Magento 2的主题-从头开始
你们中的一些人可能阅读了有关Magento 1:从头开始的主题的主题-从头开始 我想知道,为Magento 2从零开始开发主题的最佳实践是什么? 您使用本机luma还是blank主题进行构建?还是其他? 您是否使用任何扩展名来帮助您开发主题? 从头开始开发主题时应遵循哪些步骤?

3
magento升级后出现错误
在CLI中触发此命令后 php bin/magento setup:upgrade 我收到以下错误-: Fatal error: Uncaught exception 'Magento\Framework\Exception\LocalizedException' with message 'Can't create directory /var/www/html/magento/magento2.0/var/generation/Magento/Framework/App/ResourceConnection/.' in /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Generator.php:103 Stack trace: #0 /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Generator/Autoloader.php(35): Magento\Framework\Code\Generator->generateClass('Magento\\Framewo...') #1 [internal function]: Magento\Framework\Code\Generator\Autoloader->load('Magento\\Framewo...') #2 [internal function]: spl_autoload_call('Magento\\Framewo...') #3 /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Reader/ClassReader.php(19): ReflectionClass->__construct('Magento\\Framewo...') #4 /var/www/html/magento/magento2.0/vendor/magento/framework/ObjectManager/Definition/Runtime.php(44): Magento\Framework\Code\Reader\ClassReader->getConstructor('Magento\\Framewo...') #5 /var/www/html/magento/magento2.0/vendor/magento/framework/ObjectMana in /var/www/html/magento/magento2.0/vendor/magento/framework/Code/Generator.php on line 103`



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.