2011-12-02 56 views
1

我有控制器和它下面的代码:在我的config.xml如何在布局XML中为我的Magento控制器定义块?

class Company_ModuleName_NameController extends Mage_Core_Controller_Front_Action 
{ 

    public function indexAction() 
    { 
     $this->loadLayout();  
     $this->renderLayout(); 
    } 
} 

然后我已经配置布局XML。现在我想添加指向.phtml文件的块,当用户访问我的控制器时,该.phtml文件将显示给用户。

回答

3

首先,你应该定义布局手柄控制器:

像这样:

<modulename_name_index> 

</modulename_name_index> 

的,你应该定义要在其中显示:内容,左,右,另一块:

<modulename_name_index> 
    <reference name="content"> 
    </reference name="content"> 
</modulename_name_index> 

然后你定义块将被显示:

<modulename_name_index> 
    <reference name="content"> 
     <block type="module/blockname" name="blockname" template="templatedir/templatefile.phtml"/> 
    </reference name="content"> 
</modulename_name_index> 

其中module/blockname是块的名称。在示例文件中应该是这样的:

公司/ ModuleName/Block/Blockname.php。 你的config.xml也应该被正确定义,所以magento明白,使用'模块'的东西,它应该加载特别是你的类。 事情是这样的:

<global> 
    ... 
    <blocks> 
     <module> 
      <class>Company_Module_Block</class> 
     </module> 
    </blocks> 
    ... 
</global> 

更新1

如果你想简单地渲染一些内容,那么你可以使用Magento的默认块类:

core/template or Mage/Core/Block/Template 

这是怎么了你的xml文件然后将看起来像:

<modulename_name_index> 
    <reference name="content"> 
     <block type="core/template" name="blockname" template="templatedir/templatefile.phtml"/> 
    </reference name="content"> 
</modulename_name_index> 

但如果你在一个.phtml文件像有:

$this->getSomethingSpecificValueForCurrentDisplay() 

这是行不通的。另一方面,如果你的phtml中有非​​常简单的php,就像下面这样,你不需要你的自定义块。

<?php for(i = 0; i++; i< 10){ ?> 
    <?php echo "Hello mates" ?> 
<?php } ?> 
+0

为什么我必须有Blockname.php文件,如果我只是想查看phtml文件?以及该块文件应该包含哪些内容。 – newbie

相关问题