Magento Block

简介:

1.首先启用block配置

/* 模板.phtml文件中使用的方法在此文件中声明,此案例中此文件将计算结果传递到.phtml文件 */
app/code/local/Hellokey/Counter/Block/Counter.php
/* 主要的插件配置文件 */
app/code/local/Hellokey/Counter/etc/config.xml

Java代码   收藏代码
  1. <blocks>  
  2.     <hellokey>  
  3.     <class>Hellokey_Counter_Block</class>  
  4.     </hellokey>  
  5. </blocks>  
  6. </global>   

会加载下面所有的block文件。注意大小写标签

/* 前台显示模板的layout */
app/design/frontend/default/default/layout/counter.xml  Block/Counter.php启用配置

Java代码   收藏代码
  1. <block type="Hellokey/counter" name="counter" template="customer/index.phtml"/>  

有时候会出现一种情况,一个block只需要模板文件而不需要php文件,比如只是需要加一个flash,最多有些简单的php代码,但一个block,type是不可缺少的,那怎么办呢。其实Magento已经给我们提供了一种通用方案,当不需要特别指定type时,可以用core/template 代替,系统自带的模板里就有这种用法

 

2.我们就在counter/index/index这个path下的indexAction中接收这个参数

app/code/local/Hellokeykey/Counter/controllers/IndexController.php文件中代码片段

Java代码   收藏代码
  1. public function indexAction()  
  2. {  
  3.     if ($this->getRequest()->isPost()){ /* 首先判断是否有post发生 */  
  4.         $nu1 = $this->getRequest()->getParam('NUM1'); /* 截获参数 */  
  5.         $nu2 = $this->getRequest()->getParam('NUM2');  
  6.         Mage::register('nu1', $nu1);/* 传递到block */  
  7.         Mage::register('nu2', $nu2);  
  8.     }  
  9.    
  10.     $this->loadLayout();  
  11.     $this->renderLayout();  
  12. }  

既然在controllers中有了传递到block的方法,下一步就在block中获取
app/code/local/Hellokeykey/Counter/Block/Counter.php文件中代码片段

Java代码   收藏代码
  1. protected $nu1 = null ;  
  2. protected $nu2 = null;  
  3. public function showresult(){  
  4.     $this->nu1 = Mage::registry('nu1'); /* 获得从controllers中传递来的参数 */  
  5.     $this->nu2 = Mage::registry('nu2');  
  6.     return $this->nu1 * $this->nu2;  
  7. }  
  8.   
  9. protected function _prepareCollection()    
  10. {  
  11.     $roleId = $this->getRequest()->getParam('rid');  
  12.     Mage::register('RID', $roleId);  
  13.     $collection = Mage::getModel('api/roles')->getUsersCollection();  
  14.     $this->setCollection($collection);  
  15.     return parent::_prepareCollection();  
  16. }  
  17.   
  18. protected function  _toHtml()  //相当于block xml 中的temple="..detail.phtml"  
  19. {  
  20.     $this->setTemplate("virtualcurrency/customer/accounts/detail.phtml");         
  21.     $html = parent::_toHtml();  
  22.     return $html;  
  23. }  
  24.    

此block文件中的showresult()方法在phtml文件中可以试用$this->直接调用。

这样我们就差最后一步就是在我们的模板文件中输出结果了在app/design/frontend/default/default/template/customer/index.phtml文件中添加输出结果的代码

Java代码   收藏代码
  1. <ul>  
  2. <li>result:<?php echo $this->showresult(); ?></li>  
  3. </ul>  
相关文章
|
存储 缓存 前端开发
WordPress缓存插件WP Fastest Cache插件使用教程
WordPress缓存插件WP Fastest Cache插件使用教程
1073 0
|
前端开发
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
334 0
vuecli3打包报警告:chunk chunk-common [mini-css-extract-plugin] Conflicting order.
|
7月前
|
移动开发
解决uniapp发布H5项目生产环境运行报错index.63b34199.css:1 Failed to load resource: the server responded with a
解决uniapp发布H5项目生产环境运行报错index.63b34199.css:1 Failed to load resource: the server responded with a
|
缓存 前端开发
怎么处理 Loading CSS chunk xx failed
怎么处理 Loading CSS chunk xx failed
1892 0
|
iOS开发
iOS开发- 关于Block的几种应用
iOS开发- 关于Block的几种应用
120 0
|
关系型数据库 MySQL Linux
解读InnoDB页面--系统文件结构
前言 很久之前了解到innodb_space,觉得很强大,可视化了InnoDB页面,但是没有形成文档,总结出来,有一些经常被问到的东东可以用这个查看了。 环境 centos 7 Linux izhp3j8nb7nyq2g923r9fvz 3.
1900 0
|
C语言 iOS开发