【发布时间】:2012-11-25 04:41:54
【问题描述】:
示例
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>
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;
}
}
app/design/.../.../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 等)吗?
- 是否有不应该使用这种方法的场景?
- 我是否还缺少与布局文件中的块实例化相关的其他内容?
- 我可能还缺少与布局文件中的操作相关的其他内容吗?
【问题讨论】: