gpt4 book ai didi

php - 如何使用 Magento 布局 xml 文件中的操作方法

转载 作者:可可西里 更新时间:2023-11-01 12:47:48 24 4
gpt4 key购买 nike

示例

我的布局文件.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 的 block 类前缀也在您的模块 config.xml 中定义

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

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

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

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

问题

  1. 可以使用哪些用例示例?
  2. 你能传递字符串以外的任何东西吗? (对象,数组)?
  3. 自动 setter 和 getter 方法是否在布局文件中起作用?
  4. 是否可以使用逻辑(if、then、foreach、else 等)?
  5. 是否存在不应该使用此方法的场景?
  6. 还有什么我可能遗漏的与布局文件中的 block 实例化相关的吗?
  7. 是否还有其他与布局文件中的操作相关的内容我可能会遗漏?

最佳答案

  1. 可用于多用途模板。查看catalog.xmlsetTitle 的使用。
  2. 任何东西都可以传递。数组可以在布局 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 可以传递给子节点中的助手!

  3. block 扩展 Varien_Object,所以是的,尽管 setter 是唯一合理使用的方法。
  4. 这没有直接的逻辑。最接近的是操作的 ifconfig 属性,它将使用提供的参数调用 Mage::getStoreConfigFlag() 并在配置值为真时处理操作。
  5. “[c]不能使用”- 不。 “没关系”- 是的。
  6. 其中有很多细微差别(太多了,无法在这里一一列举),但您已经了解了很多。 Alan Storm 在他的书中得到了所有细微差别,No Frills Magento Layout ;不过,没有什么比自己探索极限更好的了。

关于php - 如何使用 Magento 布局 xml 文件中的操作方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13755707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com