Magento布局xml文件中的动作方法是如何使用的

例子

mylayoutfile.xml

 <layout>
        <default>
            <reference name="header">
                <block type="mynamespace_mymodule/view" name="mynamespace_mymodule" output="toHtml" template="mymodule/html/view.phtml">
                    <action method="setTest"><param1>myparam1</param1><param2>myparam2</param2></action>
                </block>
            </reference>
        </default>
    </layout>

应用程序/代码/本地/ myNameSpace对象/ Mymodule中/座/ View.php

    class Mynamespace_Mymodule_Block_View extends Mage_Core_Block_Template{
        public $test = "before any params";
            public function setTest($passedparam1,$passedparam2){
             $this->test = $passedparam1 ." ". $passedparam2;
            }

}

应用程序/设计/.../.../ mymodule中/ HTML / view.phtml

<?php
echo "<pre>";
print_r($this->test);  //myparam1 myparam2
echo"</pre>";
die();

说明

mylayoutfile通过模块config.xml在更新中编译

mynamespace_module的块类前缀也在模块config.xml中定义

将mynamespace_module / view设置为块类型并实例化,并设置view.phtml的输出文件

会发生一个操作,调用父节点块的方法setTest传递两个参数,其值为myparam1和myparam2。

在setTest函数内部,类参数“test”被设置为等于“myparam1 myparam2”

模板文件app / design /.../.../ mymodule / html / view.phtml被加载,并且我们回显$ this-> test的值($ this指的是较早实例化的块类Mynamespace_mymodule_Block_View)

质询

  • 这可能会被使用的用例有哪些例子?
  • 你能通过除字符串以外的任何其他内容吗 (对象,阵列)?
  • automagical setter和getter方法是否在布局文件中工作?
  • 可以使用逻辑(如果,然后,foreach,其他等)?
  • 有没有这种方法不应该使用的场景?
  • 还有什么我可能会丢失与块布局文件中的块实例相关吗?
  • 还有什么我可能会丢失与布局文件中的操作有关吗?

  • 可以用于多用途模板。 在catalog.xml中查看setTitle的用法。
  • 任何事情都可以通过。 数组可以在布局XML中定义:

    <action method="setFoo">
        <arbitrary>
            <key1>val1</key1>
            <key2>val1</key2>
        </arbitrary>
    </action>
    

    另外,参数节点可以执行一个辅助方法,其返回值将作为值传入:

    <action method="setFoo">
        <arbitrary helper="foo/bar" />
    </action>
    

    这将实例化一个帮助器并运行一个方法: Mage::helper('foo')->bar() 。 返回值因此可以是任何你想要的。 此外,可以将args传递给子节点中的助手!

  • 块扩展Varien_Object ,所以是的,尽管setters是唯一合理的使用。
  • 这没有直接的逻辑。 最接近的是动作的ifconfig属性,它将使用提供的参数调用Mage::getStoreConfigFlag() ,并在配置值为true时处理动作。
  • “[c]不能使用” - 不。 “无所谓” - 是的。
  • 有很多细微差别(太多了,不能进入这里),但你已经有很多了。 Alan Storm在他的书“无褶皱Magento布局”中获得了所有的细微差别; 尽管如此,没有什么可以跳过探索限制。
  • 链接地址: http://www.djcxy.com/p/59481.html

    上一篇: How are action methods within Magento layout xml files intended to be used

    下一篇: Best way to handle forms in blocks?