Questions tagged «module»

有关开发自定义模块的问题


1
如何使我的自定义模块页面使用SSL?
我已经创建了一个包含一些页面的模块,并且想知道如何强制该页面在URL上使用SSL,例如客户登录页面。并非所有页面都需要它,但是有些页面需要。 我想到的(尽管我还没有尝试过)是评估动作控制器中的URL并重定向到https://是否在magento config中启用了SSL且当前URL未使用它。 这种方法正确吗?还是这种设置进入配置文件?

3
为配置定义值设置默认值?
如何为我在system.xml文件中定义的配置值分配默认值?目前它默认为“否”,但我希望它默认为“是”。 这是我当前的定义代码: <catalog> <groups> <my_val> <label>My Label</label> <frontend_type>text</frontend_type> <sort_order>160</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <my_inner_val translate='label comment'> <label>Enable seperate cart items</label> <frontend_type>select</frontend_type> <source_model>adminhtml/system_config_source_yesno</source_model> <sort_order>1</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </my_inner_val> </fields> </my_val> </groups> </catalog>



2
Magento 2:如何创建自己的自定义缓存类型?
在Magento 1中,可以通过在您的中声明以下内容来创建自己的缓存类型config.xml: <global> <cache> <types> <custom translate="label,description" module="module"> <label>Custom Cache</label> <description>This is my custom cacge</description> <tags>CUSTOM_CACHE_TAG</tags> </custom > </types> </cache> </global> 这将导致在“ 系统”>“缓存管理”下将新的缓存类型添加到后端,因此,它将添加刷新与CUSTOM_CACHE_TAG缓存标签相关的缓存的功能。 在M2中有可能吗?如何实现?

4
Magento 2不允许使用符号链接链接模块
我已经使用符号链接将本地开发模块(单独的git repo)添加到了Magento 2,在我点击PHTML模板之前,它一直运行良好。经过大量调试后,我发现Magento 2文件系统类(Magento\Framework\Filesystem\Directory\Read)使用一种isExists()结合了getAbsolutePath()调用的方法来查看PHTML模板是否存在。但是,该getAbsolutePath()方法检查Magento 2文件系统中是否存在相对路径,如果不存在,则将Magento 2根目录作为前缀。它。就我而言,该模块位于/git/AMagento所在的单独的存储库中/site/B,此行为将检查中是否存在PHTML模板/site/B/git/A。 简而言之:无论系统配置设置“允许符号链接”处于打开状态,都不会拾取Magento 2根文件系统外部的PHTML模板。似乎该设置有效,但前提是该符号链接的源仍在Magento 2文件系统中。 还有其他人遇到过吗?在外部git repo中处理开发的最佳方法是什么?
10 module  magento2 

3
如何在系统配置中将“图像”字段添加到自定义动态字段中?
我想允许管理员用户生成他/她想要的尽可能多的字段。我在另一个扩展中找到了解决方案,并以此为起点。所以我有这样的代码: 在system.xml: <showcases translate="label"> <label>Showcases</label> <frontend_type>text</frontend_type> <sort_order>10</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> <fields> <showcase translate="label"> <label>Showcases</label> <frontend_type>select</frontend_type> <frontend_model>awesomehome/adminhtml_showcases</frontend_model> <backend_model>adminhtml/system_config_backend_serialized</backend_model> <sort_order>410</sort_order> <show_in_default>1</show_in_default> <show_in_website>1</show_in_website> <show_in_store>1</show_in_store> </showcase> </fields> </showcases> 在Namespace/Awesomehome/Block/Adminhtml/Showcases.php: class Namespace_Awesomehome_Block_Adminhtml_Showcases extends Mage_Adminhtml_Block_System_Config_Form_Field { protected $_addRowButtonHtml = array(); protected $_removeRowButtonHtml = array(); protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element) { $this->setElement($element); $html = '<div id="showcase_template" style="display:none">'; $html …

2
如何从自定义模块覆盖核心模板文件?
我想覆盖两个文件。即销售订单的view.phtml和print.phtml。 (路径:app/design/frontend/base/default/template/sales/order/) 我正在创建一个模块,在其中要创建路径,app/design/frontend/base/default/template/<My Module Name>/sales/order/以免内核view.phtml和print.phtml文件被覆盖。 因此,请指导我如何完成这项任务。

3
卸载模块
我正在尝试使用以下命令使用CLI卸载通过composer安装的模块(我自己的模块): bin/magento module:uninstall -r [Namespace]_[Module] 基于@RyanH 在此处提供的答案,我创建了Setup/Uninstall.php删除该模块的数据库相关数据的文件。 这可以正常工作,但是卸载过程会挂起。 我什至让脚本运行了一整夜,结果仍然相同。 扩展文件仍在vendor模块中。 我没有触摸文件权限或所有者。 正确的做法: 数据库相关数据已删除 模块名称已从表中删除 setup_module 模块名称已从中删除app/etc/config.php。 出了什么问题: 模块文件仍在vendor文件夹中。 控制台命令未完成。 控制台输出: 您将要删除代码和/或数据库表。确定吗?[y / N] y 启用维护模式 您正在删除数据而没有数据库备份。 去除的数据[命名空间] _ [模块] 卸下[命名空间] _ [模块]从数据库模块注册表 卸下[命名空间] _ [模块]从在部署配置模块列表 从Magento的去除代码库的代码: 在此之后它就挂了。 无论如何,是否有完成卸载过程或至少调试它的过程?


2
何时确切使用php bin / magento设置:升级
在很多情况下,我会在开发人员模式下更改模块中的某些文件,但是直到我运行后,更改才会在前端进行 php bin/magento setup:upgrade 只想知道我们什么时候应该运行setup:upgrade命令,Magento 2的目的是什么? 这对我来说真是太奇怪了,因为每次我进行一些更改时,只有在我运行setup:upgrade命令之后,这些更改才可见。即使我删除了var / cache,它仍然不可见。有人知道原因吗?

6
Magento 2:目前无法在Controller中更改产品价格!
我试图这样更改我的产品的价格: Controller.php: [编辑] <?php namespace MassiveArt\ShoppingCart\Controller\Index; use Magento\Catalog\Model\ProductFactory; use Magento\Checkout\Model\Cart; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; use Magento\Framework\Controller\Result\JsonFactory; use Magento\Framework\Data\Form\FormKey; class Index extends Action { /** * @var FormKey */ protected $formKey; /** * @var Session */ protected $checkoutSession; /** * @var Cart */ protected $cart; /** * @var ProductFactory */ protected …

2
什么以及为什么是加载模型的正确方法
我在Magento方面有很多经验,但是我意识到我不知道哪种加载模型的方法是正确的,为什么。我已经阅读了关于该主题的所有内容,但是人们对此类内容的解释实际上并没有深入到足以解释的原因,为什么要使用此特定方法而不是其他方法。假设没有要加载的模型的存储库。 直到现在,我一直在构造器中使用模型,然后简单地加载它。 public function __construct( \Vendor\Module\Model\Something $somethingModel ) { $this->somethingModel = $somethingModel; } public function getTestById($id) { return $this->somethingModel->load($id); } 而且它总是按预期工作,我也很确定它至少已在内核中使用。 但是后来我看到一位同事在使用 modelFactory->create()->load($id) 据我了解,工厂正被用来创建一个新的实体,例如,如果我想创建一个新产品,那么我可以创建工厂,用数据填充它,然后保存它。但是话又说回来,我开始研究这个话题,并从Fabian Schmengler(我们何时应该在Magento 2中使用存储库和工厂?)中看到了一个示例,他以这种方式加载模型,并且不鼓励其他人简单地加载模型,他没有这样做。除了解释为什么它不是“服务合同的一部分”之外,还要说明原因。据我了解,存储库是服务合同的一部分,因此在加载通过存储库不可用的模型时,在这里看不到任何联系。 为了增加一些混乱,我还找到了一种通过从创建的modelFactory中获取resourceModel来加载模型的方法,该方法由Vinai Kopp提出(如何在Magento 2中实现自定义模块的服务合同?),现在就像我一直读到的那样,我不应该直接使用资源模型而完全迷失了方向。 是的,有人可以告诉我哪种方法正确,为什么我应该用它代替所有其他方法?

2
如何使用自定义输入字段将产品“添加到购物车”并将其保存到数据库?
我创建了一个自定义模块,在其中重写了产品页面上的“ 添加到购物车”表单,并成功使用catalog_product_view.xml文件完成了此操作。现在,我可以在产品页面的前视图上看到一个自定义输入字段,但是我需要将该字段的值与数量,价格等一起发布到数据库中,然后在订单历史记录中再次检索它。 我搜索了一段时间,也成功地在quote_item&sales_order表中创建了新的自定义列。(根据我的信息,添加到购物车条目quote_item和结帐到sales_order表后的订单。如果我对此有误,请在此方面也进行纠正,因为我仍然是学习者。) 我尝试了很多并进行了搜索,但没有找到相关的解决方案。我的供应商名称为Cloudways,模块名称为Mymodule。以下是我的模块的文件: Cloudways / Mymodule / registration.php <?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Cloudways_Mymodule', __DIR__ ); Cloudways / Mymodule / etc / module.xml <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Cloudways_Mymodule" setup_version="1.0.1"></module> </config> Cloudways / Mymodule / Setup / UpgradeSchema.php <?php namespace Cloudways\Mymodule\Setup; use Magento\Framework\Setup\UpgradeSchemaInterface; use Magento\Framework\Setup\SchemaSetupInterface; use Magento\Framework\Setup\ModuleContextInterface; class UpgradeSchema implements …

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.