4

私は 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 モジュールの管理セクションのカスタム ページに追加するにはどうすればよいですか?

どんな助けでも大歓迎です。

ありがとう

4

7 に答える 7

2

ナミンの召集にすべて大文字を使用しないようにする必要があります。場合によっては、大文字を使用してさまざまなクラスなどを区別し、名前を次のように変更します。

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>
于 2013-03-07T14:15:57.123 に答える
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>
于 2013-03-05T14:23:46.177 に答える
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>
于 2013-03-06T15:29:53.427 に答える
0

また、モジュールの名前を

<Gwb_Magecrmsync>
于 2013-03-05T21:38:47.820 に答える
0

Alan Storm がいくつかのガイダンスについて回答したこれらの SO の質問も確認してください:
Magento Custom Module How to store variable in config.xml
and Setting a global variable in Magento, the GUI way?

2 番目の質問には、より詳細な回答があり、そのうちの 1 つは、管理メニューに関する最初のモジュールで役に立ちました。2 番目の質問に回答を追加し、自分が何をしていたかをさらに説明しようとし、回答に関連して作成したパッケージを含めました。

于 2013-03-06T01:52:02.277 に答える
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();
    }
}

そして、それはあなたが望むように機能します。

于 2013-03-14T11:18:25.873 に答える
-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>
  1. アクションノードはあなたのコントローラーを表します。したがって、ここであなたのディレクトリは Magecrmsync/controllers/Adminhtml/MagecrmsyncController にある必要があります *正しいクラスを拡張していることを確認してください

このコントローラーで loadlayout() を呼び出します -> この人はすべての layout.xml ファイルをロードしてメモリに保持し、renderlayout() -> この人は実際の印刷を行います。

  1. しかし、ちょっと待ってください。上記の loadlayout() は、このカスタム拡張の layout.xml を認識していません。問題なく作成できます。したがって、単に design->adminhtml->package->theme->layout に移動し、layout.xml を配置します。これは、あなたの場合は .... is..... ああ、config.xml にそれがありません(管理者用のlayout.xmlはadminhtmlノードにある必要があるため、1つ持っていますが、それはフロントエンド用のようですが、フロントエンドノードがないため、それでも正しくありません。)とにかく、これを持っていると仮定しましょう管理者用の新しいレイアウト xml ファイルを取得し、adminhtml ノードに配置しました。例えば

    <adminhtml>
    <layout>
        <updates>
            <services>
                <file>layitoutdarling.xml</file>
            </services>
        </updates>
    </layout> </adminhtml>
    

これで、この新しい layoutitoutdarling ファイルが参照されるか、旅に必要なクラスへのポイントを指定できます。このレイアウト ファイルには、必要なものの秘密が保持されます。はい、それは何を持っているつもりですか????? .. ハンドル :-S ハンドルは URL (または mod/controller/method へのパス) に一致し、それらの間に囲まれたものを呼び出します。たとえば、このランダムな例ではハンドルです。その 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 ファイル (Employee/Block/Adminhtml/Employee/Grid.php) を示します。グリッド コンテナとグリッドには違いがあります。

Magento のフォームは、2 つの 4 つの基本部分に分けられます。 1. FORM コンテナ 2. FORM タグ 3. FORM タブ 4. 実際のフォーム フィールド

私が言ったことの詳細はこちら

次に、タブの場合、Grid Container セクションにAdd New Sexy Girlボタン を配置したとします。もちろん、(コントローラー) /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 杯残っています。

私の親愛なる友人がそのウェブサイトをチェックして休むと、あなたも私のようになります..将来のmagentoの専​​門家.

于 2013-03-13T08:20:52.477 に答える