我是Magento的新手,起初我完成了创建Magento Extension的任务。所以我正在从互联网上阅读并创建扩展。我的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>
请在此处查看我的更新代码:
How to add custom tab in left sidebar to my custom page in admin section in magento module?
任何帮助都将不胜感激。
由于
答案 0 :(得分:2)
你应该尽量不要使用所有大写字母进行namin会议,在某些情况下,使用Captial字母来区分不同的类别等,重命名为:
Gwb_Magecrmsync
您的操作不正确,请尝试以下操作:
<action>magecrmsync/adminhtml_synchronize</action>
您还需要管理员的路由器定义
<admin>
<routers>
<magecrmsync>
<use>admin</use>
<args>
<module>GWB_MAGECRMSYNC</module>
<frontName>magecrmsync</frontName>
</args>
</magecrmsync>
</routers>
</admin>
答案 1 :(得分:1)
我建议您将模块名称从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>
答案 2 :(得分:1)
看看我的配置可能会对你有所帮助。
<?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>
答案 3 :(得分:0)
并将您的模块重命名为
<Gwb_Magecrmsync>
答案 4 :(得分:0)
检查Alan Storm回答的这些问题,以获得一些指导:
Magento Custom Module How to store variable in config.xml
和Setting a global variable in Magento, the GUI way?
第二个问题有更全面的答案,其中一个帮助我使用Admin菜单中的第一个模块。我添加了第二个问题的答案,试图进一步解释我在做什么,并包括我创建的与我的答案相关的包。
答案 5 :(得分:0)
这就是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 / Magecrmcync / controllers / Adminhtml中创建一个SynchronizeController.php:
class Gwb_Magecrmsync_Adminhtml_SynchronizeController extends Mage_Adminhtml_Controller_Action
{
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
}
它会以你想要的方式工作。
答案 6 :(得分:-3)
老兄让我告诉你我未来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>
现在在此控制器中,您将调用loadlayout() - &gt;这家伙只需加载所有layout.xml文件并将其保存在内存和renderlayout() - &gt;这家伙做的实际打印。
但等一下。上面的loadlayout()不知道我们的自定义扩展的layout.xml。没问题,让我们创建一个。 所以,只需转到design-&gt; adminhtml-&gt; package-&gt; theme-&gt;布局并放置你的layout.xml,在你的情况下....是.....哦你没有那个你的config.xml(因为admin的layout.xml必须在adminhtml节点,你有一个,但似乎是前端,但仍然不正确,因为你没有前端节点。)无论如何让我们假设你可能已经有了这个,并为您的管理员获得了一个新的布局xml文件,并将其放在adminhtml节点。例如
<adminhtml>
<layout>
<updates>
<services>
<file>layitoutdarling.xml</file>
</services>
</updates>
</layout> </adminhtml>
现在我们的新layoutitoutdarling文件将引用或我们可以说我们的旅程所需的类。此布局文件将保留您需要的秘密。是的它会有什么?????它会...... ......手柄:-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)是你的Grid容器。然后Grid容器将指向Grid文件(Employee / Block / Adminhtml / Employee / Grid.php)。网格容器和网格之间存在差异。
magento中的表单分为两个4个基本部分 1. FORM容器 2. FORM标签 3. FORM选项卡 4.实际表格字段
More info on whatever I have said is here
然后选项卡 假设您已在网格容器部分中放置添加新性感女孩按钮。当然它会指向(控制器)/ 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();
}
Detailed information on how to add tabs and more click here
是的,我只喝了4瓶啤酒,还剩2瓶啤酒。
请亲爱的朋友检查一下这个网站,你也会变得像我一样..未来的magento专家。