例子
我的布局文件.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>
app/code/local/Mynamespace/Mymodule/Block/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)
问题
- 有哪些可以使用它的用例示例?
- 你能传递除字符串以外的任何东西吗?(对象,数组)?
- 自动设置器和获取器方法是否在布局文件中工作?
- 可以使用逻辑(if、then、foreach、else 等)吗?
- 有没有不应该使用这种方法的场景?
- 在布局文件中,我可能还缺少与块实例化相关的任何其他内容吗?
- 与布局文件中的操作有关的其他任何我可能会丢失的东西吗?