如果你在本机的虚拟目录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>的标签,
<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
2. 定义template文件:app\design\frontend\default\default\template\customer\form\register1.phtml
3. 修改customer.xml配置
将 Xml代码
修改为
引用
将进入用户注册界面。
下面就从URL尝试分析Magento调用该页面的过程
1. URL中的customer表明当前访问的模块是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>的标签,
- <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="content">下的block就是你定义的block
上面的block是默认定义,block类文件可以由customer/form_register推测出来:
template属性推导出相应的模板文件为
template之于block犹如jsp之于javabean. 通过这样的配置block和template就联系起来了。可以在template文件中使用$this来访问block类的方法。
下面我们实现一个新的block应用
1. 定义一个新的block文件: app\code\core\Mage\Customer\Block\Form\Register1.php
- class
Mage_Customer_Block_Form_Register1 extends Mage_Directory_Block_Data{ -
public function getHello(){ -
return "Hello Block"; -
} - }
3. 修改customer.xml配置
将 Xml代码
- <block
type="customer/form_register" name="customer_form_register" template="customer/form/register.phtml"/>
- <block
type="customer/form_register1" name="customer_form_register1" template="customer/form/register1.phtml"/>
重新访问该url,不出意外你应该可以看到下面的结果
来试试吧,希望从这篇文档中你不仅仅学到了block基本应用,还能理解Magento执行一个网页的过程,以及layout文件可能如何切换(在<reference name="root">指定)的方法
来试试吧,希望从这篇文档中你不仅仅学到了block基本应用,还能理解Magento执行一个网页的过程,以及layout文件可能如何切换(在<reference name="root">指定)的方法
No comments:
Post a Comment