1

新しいメニュー項目を作成しました。これを「マイ メニュー項目」と呼びましょう。Magento の管理領域に表示されます。新しいアイテムがクリックされた場合、グリッドを表示したくありませんが、いくつかのテキスト フィールドとボタンを含む単純なフォームでアクションをトリガーする必要があります。どうすればいいですか?私が見つけたすべての例は、データを表示するグリッドを作成しましたが、それは私が望むものではありません。メニュー項目のすぐ後ろにフォームが欲しい

それは可能ですか?

ありがとう!

4

1 に答える 1

2

はい、フレームワークは本質的に拡張可能であるため、完全に可能です。なぜあなたは次のことをしないのですか。

1.) adminhtml コントローラーが機能していることを確認します。2.) メニュー項目のアクション タグで指定したアクションを作成します。3.) 上記のアクションで単純に:

$this->loadLayout();
$this->renderLayout();

コントローラーに必要なのはそれだけです。この時点で、標準の magento 管理レイアウトをロードする必要があります。ページにフォームを追加しますか? わかりました、簡単です。

4.) モジュールのレイアウト xml ファイルを宣言します。つまり、etc/config.xml で、これをグローバル ノードの外に配置します。

<adminhtml>
    <layout>
        <updates>
            <yournamespace_yourmodule>
                <file>yourfile.xml</file>
            </yournamespace_yourmodule>
        </updates>
    </layout>
</adminhtml>

では、このファイルをどこに配置しますか?

それはあなた次第ですが、 app/design/adminhtml/default/default/layout に配置することをお勧めします

このファイルは何ですか?ブロックを登録して、それにテンプレート ファイルを設定できます。

ファイルは次のようになります

<?xml version="1.0" encoding="UTF-8"?>
<layout>
<adminhtml_yourcontroller_youraction>
    <reference name="content">
         <block type="yournamespace_yourmodule/adminhtml_yourblock"
                name="yournamespace_yourmodule_form" template="yourformtemplate.phtml"/>
     </reference>
</adminhtml_yourcontroller_youraction>
</layout>

次のステップは

5.) レイアウト xml ファイルで参照している方法に従って、新しいブロックを宣言します。

編集:ブロックファイルを明確にするために、例を続けて、モジュールディレクトリのBlock/Adminhtmlの下にファイルを作成し、「Yourblock.php」または任意の名前を付けて、ブロック宣言に対応していることを確認します。

<block type="yournamespace_yourmodule/adminhtml_yourblock" ... found in your layout file.

ブロック クラスがどのように見えるかの例を次に示します。

<?php

class Yournamespace_Yourmodule_Block_Adminhtml_Yourblock extends Mage_Adminhtml_Block_Template
{
     //to statt you dont really need anything here, but this is where you would place you block methods that can assist your template file when it needs data or other logic...
}

6.) テンプレート ファイルを作成し、正しく配置します。この例では、次の場所に配置します。

アプリ/デザイン/管理者html/デフォルト/デフォルト/テンプレート

php フォームを追加します (または、適切に動作することを確認するための標準的な html)。

それだけです (フォームの表示に関して - もちろん、フォームの POST とその他すべてを受け入れるアクションを作成する必要があります)。

要点をまとめると。

  • adminhtml レイアウト更新ファイルを宣言する
  • 新しい adminhtml ブロッ​​クを宣言する
  • ブロックをインスタンス化し、そのテンプレート ファイルを設定して、レイアウトの更新がコントローラー アクションのみに固有であることを確認します。(すべてレイアウト xml ファイル内)
  • コントローラー アクションでは、レイアウトを読み込んでレンダリングするだけです。
于 2013-02-01T08:45:35.323 に答える