Magento传递变量到Block/x.phtml (Magento Block简单传值)

如果你有一个公用的html代码块单独存放在很多个phtml文件,如何不创建对应的block文件就使其被调用?

1. 传递单个变量到Block/x.phtml

<?php 
echo $this->getLayout()->createBlock('lollicupstoreshowcategoryname/category')-setId('22')->setTemplate('showcategoryname/category.phtml')->toHtml();
?>

当你想在Block 里面时候使用下面代码

<?php
class Lollicupstore_ShowCategoryName_Block_Category extends Mage_Core_Block_Template
{
    public  function  test()
    {
       echo $this->getId();
    }
}

当你想在x.phtml 里面时候使用下面代码

<?php
 echo $this->getId();
?>

2. 传多个变量到Block/x.phtml

<?php 
echo $this->getLayout()->createBlock('lollicupstoreshowcategoryname/category')->setData('key','value')->setId('2222222-')->setTemplate('showcategoryname/category.phtml')->toHtml();

?>

当你想在Block 里面时候使用下面代码

<?php
class Lollicupstore_ShowCategoryName_Block_Category extends Mage_Core_Block_Template
{
    public  function  test()
    {
          echo $this->getId();
          echo  $this->key;
    }
}

当你想在x.phtml 里面时候使用下面代码

<?php
 echo $this->key;
?>

顺便提及一下Block的一般传值方法:
如果想传一个属性如:product传值为mp3到phtml文件中,标签修改为

<reference name=”content”>
  <block type=”core/template” product=”mp3″ name=”yourName” template=”your_phtml_file”/>
</reference>

在phtml中,简单使用$this->getProduct();即可输出mp3.
如果传值是动态的,可能最好的传值机会是在controller代码中,代码例如下:

$this->getLayout()->getBlock(‘yourName’)->setProduct(‘mp3’); 

Leave a comment

您的邮箱地址不会被公开。 必填项已用 * 标注