如何在Magento中完成以下任务?
使用控制器/视图/模型方法显示“Hello World”消息。所以,如果我去http://example.com/myController
,它会显示字符串'Hello World'。能够在我的网站模板中显示此字符串(例如,页眉,页脚等)将是一个奖励。
如何向此控制器(或必要时的新控制器)添加方法,该方法与模型交互,并执行查询Select * FROM articles where id='10'
并返回行(包含列{{1到控制器?然后使用控制器包含一个视图,该视图将显示此行。因此,转到id, title, content
(或类似的东西)会在视图中显示该行。 (不需要花哨,只需http://example.com/myController/show_row
或类似的东西就可以了。)
关于Magento代码结构的任何其他信息也将非常有用。
答案 0 :(得分:532)
答案 1 :(得分:38)
在过去的一个月左右的时间里,我一直在与Magento搏斗,我仍然想弄清楚。所以这就是盲人领导盲人的情况。文档的方式很少,论坛/维基充其量只是混乱。不仅如此,还有一些解决方案已经过时或远非最佳。 我不确定你是否有一个项目或者只是想弄明白,但如果你开始修改现有的功能而不是创造一些全新的东西,那可能会更容易。为此,我肯定会在维基中使用“推荐的开发人员文章”。新的付款方式令人大开眼界。
对于调试,我肯定会建议using FirePHP并在出现问题时查看HTML源代码。 ole echo调试方法并没有真正发挥作用。
一般的架构是如此令人难以置信的复杂,即使我完全理解它,我也需要写一本书来掩盖它。我能做的最好的就是给你建议,我希望有人在我刚开始的时候给了我...
远离核心文件。不要修改它们,而是编写自己的模块并覆盖你需要的模块。
Magento使用由XML组成的配置文件来决定它需要做什么。为了让它运行你自己的东西而不是核心功能,你需要正确的xml。遗憾的是,没有关于如何构建XML的指南;你需要看一些例子并做一些严肃的测试。更复杂的是,这些文件的内容在很大程度上区分大小写。但是,如果掌握了这些功能,您可以覆盖基本功能的任何部分,从而构成一个功能非常强大的系统。
Magento使用Mage::getModel('mymodel')
,Mage::getSingleton('mysingleton')
,Mage::helper('myhelper')
等方法返回某些类的对象。它默认在其核心命名空间中找到它们。如果您希望它使用您自己的,则需要在config.xml
文件中覆盖这些内容。
您的班级名称必须与他们所在的文件夹相对应。
Magento中的很多对象最终会扩展名为Varien_Object
的东西。这是一个通用的类(有点像瑞士军刀),它的目的是让你能够动态定义自己的方法/变量。例如,您将看到它用作一个美化数组,用于将数据从一个方法传递到另一个方法。
在开发期间,请确保禁用缓存。它会让magento变得极其缓慢,但它会为你节省很多头部创伤(从敲打你的桌子上)。
你会看到$this
被大量使用。它意味着一个不同的类,具体取决于您看到的文件。 get_class($this)
是您的朋友,特别是与FirePHP一起使用。
记下纸上的东西。很多。在你遇到它们的1-2天之后,你将需要无数的小事件。
Magento喜欢OO。如果跟踪方法会带您通过5-10个不同的类,请不要感到惊讶。
阅读设计师指南here。它主要面向图形设计人员,但您需要它来了解模块输出的最终位置和原因。为此,请不要忘记在管理面板的开发人员部分打开“模板路径提示”。
还有更多,但在此之前我会停在这里。
答案 2 :(得分:2)
我宁愿推荐Mage2Gen,这将帮助您生成样板,并且您可以专注于核心业务逻辑。它只会帮助加速事情。
答案 3 :(得分:0)
Magento模块是一组目录,其中包含创建特定商店功能所需的块,控制器,帮助程序和模型。它是Magento平台中的自定义单位。可以创建Magento模块以执行具有支持逻辑的多种功能,以影响用户体验和店面外观。它具有生命周期,可以安装,删除或禁用它们。从商人和扩展开发人员的角度来看,模块都是Magento平台的核心单元。
模块声明
我们必须使用配置文件声明模块。作为Magento 2,在模块的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.0"></module> </config>
模块注册 必须使用Magento Component Registrar类在Magento 2系统中注册该模块。现在,我们将在模块根目录中创建文件registration.php:
app/code/Cloudways/Mymodule/registration.php
代码如下:
?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Cloudways_Mymodule',
__DIR__
);
检查模块状态 完成上述步骤后,我们将创建一个简单的模块。现在,我们将使用以下命令行来检查模块的状态以及是否启用该模块:
php bin/magento module:status
php bin/magento module:enable Cloudways_Mymodule
完成整个过程后,分享您的反馈意见
答案 4 :(得分:0)
我试图从magaplaza hello world教程制作我的模块,但是出了点问题。我从github导入了此模块https://github.com/astorm/magento2-hello-world的代码,它可以正常工作。 从该模块中,我创建了一个类别子类别ajax select下拉模块。将其安装在magento2安装的aap / code目录中后,请遵循以下URL。.http://www.example.com/hello_mvvm/hello/world 您可以从这里https://github.com/sanaullahAhmad/Magento2_cat_subcat_ajax_select_dropdowns下载其代码,并将其放在aap / code文件夹中。 而不是运行这些命令...
php bin/magento setup:update
php bin/magento setup:static-content:deploy -f
php bin/magento c:c
现在,您可以使用以下URL http:// {{www.example.com}} / hello_mvvm / hello / world
检查模块功能。答案 5 :(得分:0)
然后
我建议您了解系统配置。
How to Show All Categories on System Configuration Field?
在这里我举了一个很好的例子。工作正常。您可以检查并学习代码流。
您还应该学习其他例子。