Magento中Block的应用

来源:互联网 发布:php 调用js 编辑:程序博客网 时间:2024/04/30 04:30

template之于block犹如jsp之于javabean.

如果你在本机的虚拟目录magento下建立了magento.那么访问:

引用

  http://localhost/magento/index.php/customer/account/create/

将进入用户注册界面。

下面就从URL尝试分析Magento调用该页面的过程

1. URL中的customer表明当前访问的模块是customer,自动定位到:

   app/code/core/Mage/Customer

2. URL中的account表明当前访问的控制器文件为AccountController.php

app/code/core/Mage/Customer/controllers/AccountController.php

3.URL中的create表明当前访问的php方法是createAction(),该方法在文件

app/code/core/Mage/Customer/controllers/AccountController.php

4. createAction()装载目录/app/design/frontend/default/default/layout/下名字和模块名相同的 layout文件,名字为customer.xml。然后寻找名字为<customer_account_create>的标签,

Xml代码

 

  1. <customer_account_create>  
  2.   <!-- Mage_Customer -->  
  3.   <remove name="right"/>  
  4.   <remove name="left"/>  
  5.   
  6.   <reference name="root">  
  7.     <action method="setTemplate">  
  8.         <template>/page/1column.phtml</template>  
  9.      </action>  
  10.   </reference>  
  11.   <reference name="content">  
  12.     <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml"/>  
  13.   </reference>  
  14. </customer_account_create>  

 

<customer_account_create> <!-- Mage_Customer --> <remove name="right"/> <remove name="left"/> <reference name="root"> <action method="setTemplate"> <template>/page/1column.phtml</template> </action> </reference> <reference name="content"> <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml"/> </reference> </customer_account_create>

<reference name="root"> 用来说明你要使用的布局文件。这个顺带提起,不是本文讨论的范畴。

<reference name="content">下的block就是你定义的block

上面的block是默认定义,block类文件可以由customer/form_register推测出来:

   app/code/core/Mage/Customer/Block/Form/Register.php

template属性推导出相应的模板文件为

   app/design/frontend/default/default/template/customer/form/register.phtml

template之于block犹如jsp之于javabean. 通过这样的配置block和template就联系起来了。可以在template文件中使用$this来访问block类的方法。

下面我们实现一个新的block应用

1. 定义一个新的block文件: app/code/core/Mage/Customer/Block/Form/Register1.php

Java代码

 

  1. class Mage_Customer_Block_Form_Register1 extends Mage_Directory_Block_Data{  
  2.     public function getHello(){  
  3.         return "Hello Block";  
  4.     }  
  5. }  

 

class Mage_Customer_Block_Form_Register1 extends Mage_Directory_Block_Data{ public function getHello(){ return "Hello Block"; } }

2. 定义template文件:app/design/frontend/default/default/template/customer/form/register1.phtml

 

Html代码

 

  1. <?php echo $this->getHello(); ?>  

 

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

3. 修改customer.xml配置

Xml代码

 

  1. <block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml"/>  

 

<block type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml"/>

修改为

Xml代码

 

  1. <block type="customer/form_register1" name="customer_form_register1" template="customer/form/register1.phtml"/>  

 

<block type="customer/form_register1" name="customer_form_register1" template="customer/form/register1.phtml"/>

重新访问该url,不出意外你应该可以看到下面的结果

来试试吧,希望从这篇文档中你不仅仅学到了block基本应用,还能理解Magento执行一个网页的过程,以及layout文件可能如何切换(在<reference name="root">指定)的方法

原创粉丝点击