Questions tagged «magento2»

有关Magento 2的一般问题,不专门针对次要版本。使用此标签可以区分Magento1。如果您对特定版本有疑问,请改用相应的“ Magento-2.x”标签。Magento 2次要版本之间的功能可能有所不同。

3
Magento2-设置:di:编译
我一直在一个带有自定义代码的项目中工作……这是我们的第一个“中等” Magento 2项目,因此(正如我在这里的所有人一样),我们每天都在学习新事物,我们必须改变处理方式这个新的Magento版本 这个问题的原因是询问命令 setup:di:compile 从第一天开始,我就一直在与Magento 2一起使用它,因为bin / magento每次都要求它setup:upgrade,并显示消息“请重新运行Magento编译命令” 好吧...我发现setup:di:compile在这个项目中执行中断产品视图页面时,出现了完全模棱两可的致命错误。我花了整个工作日试图调试它,并用零结果更改代码进行测试 今天,我发现如果省略该命令,那么即使在生产模式下,所有命令都可以像超级按钮一样工作 所以,问题是...该setup:di:compile命令究竟是什么?需要吗?刚推荐?还是它是一些已过时的命令,不需要执行? 更新 正如某些用户所要求的,这是我所指的致命错误 PHP致命错误:无法在第93行的*** / vendor / magento / framework / ObjectManager / Factory / AbstractFactory.php中实例化抽象类Magento \ Catalog \ Block \ Product \ View \ AbstractView 我已经使用Magento \ Catalog \ Block \ Product \ View \ AbstractView搜索了任何自定义块,但仅在布局文件中找到了它,而在任何块类构造函数中都没有 我不明白的是:为什么Magento会在编译后的代码中引发致命错误,但如果没有编译后的代码,它就像一个咒语

1
以编程方式创建订单时未设置联邦快递的重量和价值
我正在尝试使用FedEx运送方法以编程方式创建订单。其他方法运行正常。当我设置FedEx时出现错误,例如请指定运送方法。调试后,我知道重量和价值为零,但我提到了产品的重量和价值。 代码: 创建.php <?php namespace yourmodule\namespace\Helper; class Create extends \Magento\Framework\App\Helper\AbstractHelper { /** * @param Magento\Framework\App\Helper\Context $context * @param Magento\Store\Model\StoreManagerInterface $storeManager * @param Magento\Catalog\Model\Product $product * @param Magento\Framework\Data\Form\FormKey $formKey $formkey, * @param Magento\Quote\Model\Quote $quote, * @param Magento\Customer\Model\CustomerFactory $customerFactory, * @param Magento\Sales\Model\Service\OrderService $orderService, */ public function __construct( \Magento\Framework\App\Helper\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Catalog\Model\Product …

7
Magento 2.2.1无法序列化值
我已将网站从2.1.6升级到2.2.1,并面临无法在前端和后端序列化值错误。 {"0":"Unable to serialize value.","1":"#0 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Translate.php(494): Magento\\Framework\\Serialize\\Serializer\\Json->serialize(Array)\n #1 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Translate.php(190): Magento\\Framework\\Translate->_saveCache()\n #2 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Area.php(244): Magento\\Framework\\Translate->loadData(NULL, false)\n #3 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Area.php(215): Magento\\Framework\\App\\Area->_initTranslate()\n #4 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Area.php(142): Magento\\Framework\\App\\Area->_loadPart('translate')\n #5 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/View\/DesignLoader.php(55): Magento\\Framework\\App\\Area->load('translate')\n #6 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/Action\/Plugin\/Design.php(48): Magento\\Framework\\View\\DesignLoader->load()\n #7 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(121): Magento\\Framework\\App\\Action\\Plugin\\Design->beforeDispatch(Object(Magento\\Cms\\Controller\\Index\\Index\\Interceptor), Object(Magento\\Framework\\App\\Request\\Http))\n #8 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(153): Magento\\Cms\\Controller\\Index\\Index\\Interceptor->Magento\\Framework\\Interception\\{closure}(Object(Magento\\Framework\\App\\Request\\Http))\n #9 \/var\/www\/vhosts\/demo.com\/eiselec\/generated\/code\/Magento\/Cms\/Controller\/Index\/Index\/Interceptor.php(39): Magento\\Cms\\Controller\\Index\\Index\\Interceptor->___callPlugins('dispatch', Array, Array)\n #10 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/App\/FrontController.php(55): Magento\\Cms\\Controller\\Index\\Index\\Interceptor->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n #11 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(58): Magento\\Framework\\App\\FrontController->dispatch(Object(Magento\\Framework\\App\\Request\\Http))\n #12 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/framework\/Interception\/Interceptor.php(138): Magento\\Framework\\App\\FrontController\\Interceptor->___callParent('dispatch', Array)\n #13 \/var\/www\/vhosts\/demo.com\/eiselec\/vendor\/magento\/module-store\/App\/FrontController\/Plugin\/RequestPreprocessor.php(94): …
12 magento2  upgrade 

1
运行migration:delta时,导致“文档中实体不匹配”的原因
我已成功将magento 1.4.1数据库升级到1.4.2,然后又升级到1.6.0。我还能够成功地将 1.6.0数据库中的data 设置和迁移到Magento 2.1.2数据库中。(情况看起来很棒!...) 从那以后,我一直在2.1.2站点上工作;添加新主题,更改某些设置以及编辑cms块。我所做的所有这些假设都是我可以运行一个migration:delta并带来新的客户和订单数据,因为这是启动新站点真正需要的。(我没有在2.1.2数据库中创建任何新订单或客户) 在尝试迁移:delta(在我再次执行1.4.1-> 1.6.0升级过程以获取当前的实时数据之后)时,我遇到了缺少deltalog表(前缀为m2cl *)的错误。我从迁移的第一个数据库中提取了全部为空的那些表。这使我可以运行带有以下警告的migration:delta: 2017-01-25 23:32:29][INFO][mode: delta][stage: delta delivering][step: Customer Attributes Step]: started [2017-01-25 23:32:30][INFO][mode: delta][stage: volume check][step: Customer Attributes Step]: started 100% [============================] Remaining Time: 1 sec [2017-01-25 23:32:30][WARNING]: Mismatch of entities in the document: customer_entity [2017-01-25 23:32:30][WARNING]: Mismatch of entities in the document: …


3
如何在Magento 2中使用AJAX呈现HTML
我尝试在Magento 2中找到通过AJAX呈现HTML的最佳方法。 方法1:使用不带布局的控制器 文件 Foo/Bar/Controller/Popin/Content.php <?php namespace Foo\Bar\Controller\Popin; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; /** * Class Content */ class Content extends Action { /** * Content constructor. * * @param Context $context */ public function __construct( Context $context ) { parent::__construct($context); } /** * */ public function execute() { /** @var …

2
Magento 2导航菜单未显示
我是Magento的新手,所以请忍受我:D 我已经成功创建了一个空白主题子主题。 我正在尝试使菜单正常工作,我一生都无法看到菜单为何不显示。我读过其他几个主题,也没有运气。 我在其中添加了根类别及其子类别。然后,我将其分配给商店设置。我已经重新索引了该站点的索引,清除了缓存,但仍然没有任何乐趣。 通过添加类别,它会显示出来,这是对的事情吗? 谢谢 似乎我没有默认类别-请参见下面的屏幕截图 更新 我已经在本地计算机上重新安装了Magento。菜单在Luma和Blank主题上显示良好,但在我自己的自定义主题上却没有显示。我需要包括或检查什么吗? 谢谢您的帮助

2
为什么有些类在其构造函数和di.xml中都定义了注入?
我不明白为什么在某些类中,它们的依赖项注入要声明两次-一次在di.xml和具体类的构造函数中进行。 例如,在中Magento\Backend\Model\Url,di.xml已定义了以下用于DI的类型集: <type name="Magento\Backend\Model\Url"> <arguments> <argument name="scopeResolver" xsi:type="object"> Magento\Backend\Model\Url\ScopeResolver</argument> <argument name="authSession" xsi:type="object"> Magento\Backend\Model\Auth\Session\Proxy</argument> <argument name="formKey" xsi:type="object"> Magento\Framework\Data\Form\FormKey\Proxy</argument> <argument name="scopeType" xsi:type="const"> Magento\Store\Model\ScopeInterface::SCOPE_STORE </argument> <argument name="backendHelper" xsi:type="object"> Magento\Backend\Helper\Data\Proxy</argument> </arguments> </type> 但是同时,在其具体类中,在注入中需要在di.xml中定义的那些类在构造函数中再次声明: <?php public function __construct( \Magento\Framework\App\Route\ConfigInterface $routeConfig, \Magento\Framework\App\RequestInterface $request, \Magento\Framework\Url\SecurityInfoInterface $urlSecurityInfo, \Magento\Framework\Url\ScopeResolverInterface $scopeResolver, \Magento\Framework\Session\Generic $session, \Magento\Framework\Session\SidResolverInterface $sidResolver, \Magento\Framework\Url\RouteParamsResolverFactory $routeParamsResolverFactory, \Magento\Framework\Url\QueryParamsResolverInterface $queryParamsResolver, \Magento\Framework\App\Config\ScopeConfigInterface …

5
Magento 2:如何为自定义模块获取调整大小的图像?
我正在使用Magento 2 CE版本2.1.0 我有带有图像字段的自定义模块。上传后,我想要不同尺寸的产品图像,其中有缩略图图像,列表图像和产品详细信息页面图像。 能够上传1张图片而无需调整大小。 我正在使用以下代码调整图片大小,但是它提供了产品图片的网址。不是我的自定义模块。 \ app \ code \ Custom \ Module \ Block \ MyPosts \ Edit.php public function getImage($posts, $image) { $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $_imagehelper = $objectManager->get('Magento\Catalog\Helper\Image'); echo $postImage = $_imagehelper->init($posts, $image)->constrainOnly(FALSE)->keepAspectRatio(TRUE)->keepFrame(FALSE)->resize(400)->getUrl(); exit; } 它在下面的URL http://localhost/magento2/pub/static/frontend/Magento/luma/en_US/Magento_Catalog/images/product/placeholder/.jpg 我的图片存储在这里:\magento2\pub\media\custom_module\posts\image。 如何通过此路径获取调整大小的图像以及如何保存/获取其他尺寸的图像?

2
如何在Magento 2中设置和获取客户会话数据
我正在努力进行magento 2会议。我已经在控制器文件下面创建了示例代码。 <?php namespace vendor_name\module_name\Controller\SetGetSession; use Magento\Framework\App\Action\Action; class SetGetSession extends Action { protected $customerSession; public function _construct( \Magento\Customer\Model\Session $customerSession ) { $this->customerSession = $customerSession; } public function execute() { } } 任何人都可以帮助我如何分配数据并从会话变量中检索数据吗? 谢谢。

2
管理控制器中的公共操作
我发现在类\Magento\Backend\App\AbstractAction(每个管理控制器操作的祖先)中,有一个称为的成员_publicActions,用于验证密钥,如下所示: if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) { return true; } 这意味着,如果其中列出了某个操作名称,则_publicActions可以在URL中没有密钥的情况下访问该操作。 这是开发和调试的福气,因为您可以像ROOT/admin/module/controller/action手动进行操作一样,而无需知道秘密管理员密钥,但是我不明白的是为什么我可以在没有秘密密钥的情况下访问产品编辑页面。 只需像这样调用任何产品编辑页面ROOT/admin/catalog/product/edit/id/{product_id_here}。 在publicActions订单(允许索引和查看),产品(用于编辑)和重定向控制器的重定向中,成员被覆盖。 现在我的问题是: 为什么在没有密钥的情况下只允许执行某些编辑操作,以及在什么时候/在没有密钥的情况下我的自定义CRUD模块中应该允许什么?

6
缺货的产品仍然出现在前端,搜索等中-Magento 2.1.0
我看到我的magento 2.1.0安装有问题!拒绝从搜索和类别页面隐藏缺货的产品!我清除了缓存,重新索引了,但是没有运气! 你能给我什么建议吗? 我的产品的库存为0,但在前面它们出现在库存中,当您订购它们时,会出现以下错误: We don't have as many "Item's name" as you requested. 谢谢 以后编辑: 我也知道以下信息: 在管理>商店>配置>目录>库存>库存选项>缺货商品中显示为否 这实际上是Magento的功能。将显示缺货的产品设置为否,只会将它们从类别列表页面和搜索结果页面隐藏。产品页面实际上仍然可用。从CE 1.9.1开始,甚至在配置设置下还会显示一条消息,显示缺货产品,仍然会通过直接的产品URL显示产品。这实际上是一件好事。这样,当您的产品缺货时,搜索引擎不会注册很多404页。我看不出那样留下的危害。客户仍然无法订购它们。如果您希望产品在商店中完全不可用,则必须将其标记为已禁用,或者将其可见性设置为“不可见”,或者从管理产品编辑页面上“网站”标签中删除其与网站的关联。资源:缺货的产品仍然出现在前端

7
Magento 2从块类的会话中获取客户ID
如何从会话中获取客户ID?我尝试了这个,但是没有用。 protected $_customerBonusPointFactory; protected $_customerSession; public function __construct(Session $customerSession, \Magento\Framework\View\Element\Template\Context $context) { $this->_customerSession = $customerSession; parent::__construct($context); } public function _prepareLayout() { var_dump($this->_customerSession->getCustomer()->getId()); exit(); return parent::_prepareLayout(); }

1
无法声明接口,因为名称已在使用中
在我的新模块中创建一个简单的界面之后。我输入bin / magento setup:di:compile,但收到一条错误消息,说该名称已被使用。 这是我的代码: namespace Company\Test\Api; /* * @api */ interface XyzInterface { public function getSomething(); } 然后我得到这个错误: Repositories code generation... 1/7 [====>-----------------------] 14% 2 secs 52.0 MiBPHP Fatal error: Cannot declare interface Company\Test\Api\XyzInterface, because the name is already in use in .../app/code/Company/Test/Api/XyzInterface.php on line 13 该行是“接口XyzInterface”,我不确定自己在做什么错。


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.