我是Magento的新手,起初我得到了创建Magento扩展的任务。所以我从互联网上阅读和创建扩展。我的Magento版本是1.7.0.2。
我能够创建扩展的基本结构,并保持config.xml和其他文件在适当的地方,使我的扩展在Magento正确安装,但现在我想从我的菜单调用我的控制器,我在主导航中添加在管理部分。这是我的config.xml文件,请告诉我我在这里做错了什么,这是不让我从我的菜单调用我的控制器。
<?xml version="1.0"?>
<config>
<!-- turn on our module, required for install support -->
<modules>
<Gwb_Magecrmsync>
<version>0.1.0</version>
</Gwb_Magecrmsync>
</modules>
<global>
<helpers>
<magecrmsync>
<class>Gwb_Magecrmsync_Helper</class>
</magecrmsync>
</helpers>
<!-- turn on models -->
<models>
<magecrmsync>
<class>Gwb_Magecrmsync_Model</class>
<resourceModel>Magecrmsync_mysql4</resourceModel>
</magecrmsync>
</models>
<!-- turn on models -->
<!-- turn on database connections -->
<resources>
<!-- setup is needed for automatic installation -->
<magecrmsync_setup>
<use>default_setup</use>
</magecrmsync_setup>
<magecrmsync_write>
<use>default_write</use>
</magecrmsync_write>
<magecrmsync_read>
<use>default_read</use>
</magecrmsync_read>
</resources>
<blocks>
<magecrmsync>
<class>Gwb_Magecrmsync_Block</class>
</magecrmsync>
</blocks>
<layout>
<magecrmsync>
<file>Magecrmsync.xml</file>
</magecrmsync>
</layout>
</global>
<admin>
<routers>
<magecrmsync>
<use>admin</use>
<args>
<module>Gwb_Magecrmsync</module>
<frontName>magecrmsync</frontName>
</args>
</magecrmsync>
</routers>
</admin>
<adminhtml>
<menu>
<menu1 translate="title" module="magecrmsync">
<title>Synchronize</title>
<sort_order>999</sort_order>
<children>
<menuitem1 module="magecrmsync">
<title>Synchronize</title>
<action>magecrmsync/adminhtml_magecrmsync</action>
</menuitem1>
</children>
</menu1>
</menu>
<acl>
<resources>
<admin>
<children>
<menu1 translate="title" module="magecrmsync">
<title>Synchronize</title>
<sort_order>999</sort_order>
<children>
<menuitem1>
<title>Synchronize</title>
</menuitem1>
</children>
</menu1>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>
请在这里查看我更新的代码:
如何在左侧栏添加自定义选项卡到我的自定义页面管理部分在magento模块?
如有任何帮助,不胜感激。
谢谢
你应该尽量不要使用所有的大写字母来命名,在某些情况下大写字母是用来区分不同的类等,重命名为:
Gwb_Magecrmsync
你的操作不正确,试试这个:
<action>magecrmsync/adminhtml_synchronize</action>
你还需要一个Router定义的admin
<admin>
<routers>
<magecrmsync>
<use>admin</use>
<args>
<module>GWB_MAGECRMSYNC</module>
<frontName>magecrmsync</frontName>
</args>
</magecrmsync>
</routers>
</admin>
看看我的配置,也许会对你有帮助。
<?xml version="1.0"?>
<config>
<modules>
<Tibdev_Paypal>
<version>1.1.0</version>
</Tibdev_Paypal>
</modules>
<global>
<models>
...
</models>
<helpers>
...
</helpers>
<resources>
...
</resources>
</global>
<admin>
<routers>
...
</routers>
</admin>
<adminhtml>
<menu>
<menu1 translate="title" module="Paypal">
<title>Tigerbytes GmbH</title>
<sort_order>999</sort_order>
<children>
<menuitem1 module="Paypal">
<title>Paypal 10413 Fix</title>
<action>tibdevpaypal/adminhtml_form</action>
</menuitem1>
</children>
</menu1>
</menu>
<acl>
<resources>
<admin>
<children>
<menu1 translate="title" module="Paypal">
<title>Tigerbytes GmbH</title>
<sort_order>999</sort_order>
<children>
<menuitem1>
<title>Paypal 10413 Fix</title>
</menuitem1>
</children>
</menu1>
</children>
</admin>
</resources>
</acl>
<layout>
<updates>
...
</updates>
</layout>
<translate>
<modules>
...
</modules>
</translate>
</adminhtml>
</config>
我建议您将模块名称从MAGECRMSYNC更改为MAGECRMSYNC
试
.....
<admin>
<routers>
<magecrmsync>
<use>admin</use>
<args>
<module>GWB_MAGECRMSYNC</module>
<frontName>magecrmsync</frontName>
</args>
</magecrmsync>
</routers>
</admin>
<adminhtml>
<menu>
<magecrmsync translate="title" module="magecrmsync">
<title>Synchronize</title>
<sort_order>60</sort_order>
<children>
<menuitem module="magecrmsync">
<title>Menu item 1</title>
<action>magecrmsync/adminhtml_synchronize</action>
</menuitem>
</children>
</magecrmsync>
</menu>
<acl>
<resources>
<all>
<title>Allow Everything</title>
</all>
<admin>
<children>
<magecrmsync translate="title" module="magecrmsync">
<title>Sychronize</title>
<sort_order>60</sort_order>
<children>
<menuitem>
<title>Menu item 1</title>
</menuitem>
</children>
</magecrmsync>
</children>
</admin>
</resources>
</acl>
<adminhtml>
</config>
config.xml应该是这样的:
<?xml version="1.0"?>
<config>
<!-- turn on our module, required for install support -->
<modules>
<Gwb_Magecrmsync>
<version>0.1.0</version>
</Gwb_Magecrmsync>
</modules>
<global>
<helpers>
<magecrmsync>
<class>Gwb_Magecrmsync_Helper</class>
</magecrmsync>
</helpers>
<!-- turn on models -->
<models>
<magecrmsync>
<class>Gwb_Magecrmsync_Model</class>
<resourceModel>Magecrmsync_mysql4</resourceModel>
</magecrmsync>
</models>
<!-- turn on models -->
<!-- turn on database connections -->
<resources>
<!-- setup is needed for automatic installation -->
<magecrmsync_setup>
<use>default_setup</use>
</magecrmsync_setup>
<magecrmsync_write>
<use>default_write</use>
</magecrmsync_write>
<magecrmsync_read>
<use>default_read</use>
</magecrmsync_read>
</resources>
<blocks>
<magecrmsync>
<class>Gwb_Magecrmsync_Block</class>
</magecrmsync>
</blocks>
<layout>
<magecrmsync>
<file>Magecrmsync.xml</file>
</magecrmsync>
</layout>
</global>
<admin>
<routers>
<magecrmsync>
<use>admin</use>
<args>
<module>Gwb_Magecrmsync</module>
<frontName>magecrmsync</frontName>
</args>
</magecrmsync>
</routers>
</admin>
<adminhtml>
<menu>
<menu1 translate="title" module="magecrmsync">
<title>Synchronize</title>
<sort_order>999</sort_order>
<children>
<menuitem1 module="magecrmsync">
<title>Synchronize</title>
<action>magecrmsync/adminhtml_synchronize</action>
</menuitem1>
</children>
</menu1>
</menu>
<acl>
<resources>
<admin>
<children>
<menu1 translate="title" module="magecrmsync">
<title>Synchronize</title>
<sort_order>999</sort_order>
<children>
<menuitem1>
<title>Synchronize</title>
</menuitem1>
</children>
</menu1>
</children>
</admin>
</resources>
</acl>
</adminhtml>
</config>
之后在Gwb/magecrmsync/controllers/Adminhtml:
中创建synchronizeconcontroller .phpclass Gwb_Magecrmsync_Adminhtml_SynchronizeController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
它会按照你想要的方式工作
并将模块重命名为
<Gwb_Magecrmsync>
看看Alan Storm回答的这些问题,也可以获得一些指导:
如何在config.xml中存储变量
和设置一个全局变量在Magento, GUI的方式?
第二个问题有更全面的答案,其中一个问题帮助我完成了管理菜单的第一个模块。我添加了第二个问题的答案,试图进一步解释我在做什么,并包含了我创建的与我的答案相关的包。
伙计,让我告诉你我是未来的Magento专家。所以专家说:
配置
<menu1 translate="title" module="magecrmsync">
<title>Synchronize</title>
<sort_order>999</sort_order>
<children>
<menuitem1 module="magecrmsync">
<title>Synchronize</title>
<action>magecrmsync/adminhtml_magecrmsync</action>
</menuitem1>
</children>
</menu1>
- 动作节点表示您的控制器所以这里你的目录必须在Magecrmsync/controllers/Adminhtml/MagecrmsyncController*确保它扩展了正确的类
现在在这个控制器中,你将调用loadlayout() ->这个家伙加载所有的layout。xml文件并将其保存在内存中而renderlayout() ->这个家伙执行实际的打印操作
但是等一下。上面的Loadlayout()不知道我们自定义扩展的layout.xml。没问题,让我们创建一个。因此,只需转到design->adminhtml->package->theme->layout并放置您的layout.xml,在您的示例中是....是……哦,你的config.xml中没有这个(因为admin的layout.xml必须在adminhtml节点中,你有一个,但这似乎是前端,但仍然不正确,因为你没有前端节点)无论如何,让我们假设您现在可能已经得到了这个,并且为您的admin获得了一个新的布局xml文件,并将其放在adminhtml节点中。例如
<adminhtml> <layout> <updates> <services> <file>layitoutdarling.xml</file> </services> </updates> </layout> </adminhtml>
现在这个我们新的layoutoutdarling文件将引用或者我们可以说指向我们旅程中需要的类。这个布局文件将包含您所需要的秘密。是的,它会有?????它会有…. .处理:- s句柄匹配你的URL(或路径到你的mod/控制器/方法),并调用它们之间包含的东西。例如在这个随机的例子中是一个句柄,当你去到那个url块类将被调用,其路径是Employee/block/Adminhtml/Employee.php
<?xml version="1.0"?>
<layout version="0.1.0">
<employee_adminhtml_employee_index>
<reference name="content">
<block type="employee/adminhtml_employee" name="employee" />
</reference>
</employee_adminhtml_employee_index>
</layout>
现在实际上这个文件(Employee/Block/Adminhtml/Employee.php)是你的网格容器。然后网格容器将指向网格文件(Employee/Block/Adminhtml/Employee/Grid.php)。网格容器和网格是有区别的。
紫红色的形式分为两个4个基本部分1. 表单容器2. 表单标签3.表单标签4. 实际表单字段
关于我所说的更多信息在这里
Then for Tabs假设您已经在Grid Container部分放置了Add New Sexy Girl按钮。当然它会指向(controller)/sexyController/newAction
那么现在你的newAction将指向你在左边添加标签。
public function newAction(){
$this->loadLayout();
$this->_addContent($this->getLayout()->createBlock('form/adminhtml_form_edit'))
(_addLeft() here we are adding tabs)
->_addLeft($this->getLayout()->createBlock('form/adminhtml_form_edit_tabs'));
$this->renderLayout();
}
关于如何添加选项卡和更多内容的详细信息请点击这里
我刚喝了4瓶啤酒,还剩2瓶。
休息吧,我亲爱的朋友,看看那个网站,你也会像我一样…未来的品红专家。