2012-02-01 7 views
5

app \ design \ adminhtml \ default \ default \ layoutに配置されたレイアウトXMLファイルに関する質問があります。いくつかのチュートリアルでMagentoレイアウトXMLファイル(参考、ブロック、...)の理解

は、それがこのような構造を持っていた:

<layout> 
    <adminhtml_example_index> 
     <reference name="content"> 
      <block type="awesome/adminhtml_example" name="example" /> 
     </reference> 
    </adminhtml_example_index> 

    <adminhtml_example_edit> 
     <reference name="content"> 
      <block type="awesome/adminhtml_example_edit" name="example_edit" /> 
     </reference> 
    </adminhtml_example_edit> 
</layout> 

誰かがこれらの線が何を意味するかを説明していただけますか?チュートリアルはこちらからご覧ください:here

ありがとうございました!

答えて

5

レイアウト・ハンドラは、そのハンドラ

adminhtml /例/インデックス・コントローラのページで使用する<adminhtml_example_index>

<reference name="content">は、それらの内部にそのブロックまたは他の参照を意味期待MVCコントローラにマッピングされていますブロックはcontentブロックで利用可能になります。

私は次の提案をしています。

13

のXMLベースの構造Magentoの

<adminhtml_example_index></adminhtml_example_index> 
...始まりますが、そのよく知られている最終的には強力な機能とカスタマイズ性で少し混乱と迷惑なようです

このタグは、[router] [c [コントローラ] [対応] ルータは、特定のディスパッチの一意に識別された名前です。指定した例では、config.xmlファイルのadminタグの下に、ルータ名adminhtmlがあります。

<admin> 
    <routers> 
     <adminhtml> 
      <args> 
       <modules> 
        <awesome before="Mage_Adminhtml">Super_Awesome_Adminhtml</awesome> 
       </modules> 
      </args> 
     </adminhtml> 
    </routers> 
</admin> 

このルータには、このルータに関連するモジュール設定があります。

URLが/管理/例/ [インデックス]が含まれているのであれば、Magentoのは<adminhtml>で正しいルータは、その後exampleという名前のコントローラを見つけて、この場合にはindexある正しい行動を見つけるでしょう(/管理/例/ ルータコントローラのアクション組み合わせについて、レイアウトファイルで

<adminhtml_example_index> 
    <reference name="content"> 
     <block type="awesome/adminhtml_example" name="example" /> 
    </reference> 
</adminhtml_example_index> 

)デフォルト・インデックス・アクションにディスパッチされ、レイアウトの更新が定義されています。ここでは、ページコンテンツセクションを保持するcontentという名前のメインブロックに更新が適用されます。

<block>タグは、参照する必要があるブロックを定義するために使用されます。 <type>タグは重要です。それは、ここにawesome/adminhtml_example

(ViewはブロッククラスとPHTMLファイルの両方で構成されていMagentoののMVC構造に覚えておいてください)このレイアウトをレンダリングするときに使用する必要があり、正しいブロッククラスを参照awesomeはで述べたブロック構成名ですconfig.xmlファイル。 adminhtml_exampleは、使用するブロッククラスです。

は、一意のブロック名が(良い命名規則は、一意性を保持します)に定義され、blockタグの下

<global> 
    ----- 
    <blocks> 
     <awesome> 
      <class>Super_Awesome_Block</class> 
     </awesome> 
    </blocks> 
</global> 

を参照してください。次に、これらのブロックのクラスパスはSuper/Awsome/Block/と識別できます。

ブロック構成名が解決されるようになりました。 adminhtml_exampleは、使用される正確なブロッククラスです。ブロック名(素晴らしい)の後のアンダースコアは、ディレクトリセパレータに変換されます。

それによると、ブロッククラスの完全なパスは、我々はここでそれを指定することができ、レイアウトファイルがある場合は、クラス名が

class Super_Awesome_Block_Adminhtml_Example extends …. 

のようになります

[codepool]/Super/Awsome/Block/Adminhtml/Example.php 

になります。..次いで.phtmlファイルが前記ブロック・クラス

<reference name="root"> 
    <block type="page/html" name="root" template="simplepage.phtml" /> 
</reference> 

ホープ番目を使用してレンダリングされること何か不明な点がございましたら申し訳ございません...

+1

説明は抜群です。がんばり続ける。 :) – Coder

関連する問題