magento插件教程-2- magento计算器| magento开发| magento教程

magento插件教程

这个案例的内容是,在magento前台输入两个数,然后输出结果。
这个案例的目的是
1.数值是如何在magento的Controllers传递到Block中的,又是如何在phtml文件中输出的。
2.controllers中的action使用。
3.了解使用form post参数和如何get参数。

首先来看下这个案例中的文件结构
/* 声明插件,指定codePool、插件开启状态等 */
app/etc/modules/Hellokeykey_Counter.xml
/* 模板.phtml文件中使用的方法在此文件中声明,此案例中此文件将计算结果传递到.phtml文件 */
app/code/local/Hellokeykey/Counter/Block/Counter.php
/* 我们此案例的的控制器 http://magento-root-folder/module-name/controller-name/action-neame
此例中IndexController控制器中的一个action获取counter.phtml中传来的参数,并将参数传递到Counter.php,在Counter.php中计算后将结果返回到counter.phtml输出 */
app/code/local/Hellokeykey/Counter/controllers/IndexController.php
/* 主要的插件配置文件 */
app/code/local/Hellokeykey/Counter/etc/config.xml
/* 前台显示模板的layout */
app/design/frontend/default/default/layout/counter.xml
/* 前台模板文件,我们的form和结果最终就在这个文件输出,此文件直接使用$this->调用与其相应的block中的方法,本例中我们只使用这一个模板页面。 */
app/design/frontend/default/default/template/counter/counter.phtml
/* Helper此例不使用,放在这主要作用是显得气派,充门面 */
app/code/local/Hellokeykey/Counter/Helper/Data.php

我们先从简单的开始,那就先在前台的模板文件counter.phtml中写个提交的form吧,form我也忘了具体怎么写了,毕竟不天天写这个,没关系,我们有google,代码如下。
app/design/frontend/default/default/template/counter/counter.phtml文件中代码片段(详见本例文件)
<form action="<?php echo Mage::getUrl('counter') ?>" method="post" id="orderreport-form">
        <fieldset>
            <ul>
                <li>
                    <label for="NUM1"><?php echo $this->__('NUM1: ') ?><span class="required">*</span></label>
                    <input type="text" id="NUM1" name="NUM1" class="input-text required-entry validate-alphanum" />
                </li>
                <li>
                    <label for="NUM2"><?php echo $this->__('NUM2: ') ?><span class="required">*</span></label>
                    <input type="text" id="NUM2" name="NUM2" class="input-text required-entry validate-alphanum" />
                </li>
                <li>
                    <input type="submit" value="<?php echo $this->__('submit') ?>" />
                </li>
            </ul>
        </fieldset>
</form>
注意action="<?php echo Mage::getUrl('counter') ?>" 等同于 action="<?php echo Mage::getUrl('counter/index/index') ?>"
   http://127.0.0.1/magento1324le/index.php/counter/index/index如果使用默认的IndexController.php中的index控制器,可以省略简写。

有数据的post了,我们就在counter/index/index这个path下的indexAction中接收这个参数
app/code/local/Hellokeykey/Counter/controllers/IndexController.php文件中代码片段(详见本例文件)
    public function indexAction()
    {
       
        if ($this->getRequest()->isPost()){ /* 首先判断是否有post发生 */
            $nu1 = $this->getRequest()->getParam('NUM1'); /* 截获参数 */
            $nu2 = $this->getRequest()->getParam('NUM2');
            Mage::register('nu1', $nu1);/* 传递到block */
            Mage::register('nu2', $nu2);
        }
           
        $this->loadLayout();    
        $this->renderLayout();
    }

既然在controllers中有了传递到block的方法,下一步就在block中获取
app/code/local/Hellokeykey/Counter/Block/Counter.php文件中代码片段(详见本例文件)
    protected $nu1 = null ;
    protected $nu2 = null;
    public function showresult(){
        $this->nu1 = Mage::registry('nu1'); /* 获得从controllers中传递来的参数 */
        $this->nu2 = Mage::registry('nu2');
        return $this->nu1 * $this->nu2;
   
    }
此block文件中的showresult()方法在phtml文件中可以试用$this->直接调用。

这样我们就差{zh1}一步就是在我们的模板文件中输出结果了在app/design/frontend/default/default/template/counter/counter.phtml文件中添加输出结果的代码
<ul>
<li>result:<?php echo $this->showresult(); ?></li>
</ul>

此例只做讲解试用,勿苛求太多,大家有所收获就好。

我来给大家打气:
我基本是凭着C语言的基础(C++也学的不行啊)来开始做magento插件的,一直google,希望大家和我一样,保持不懂是正常现象,懂才奇怪的心态,共同进步。

我的强项必须是magento模板,希望大家继续支持我,在magentokey.com 可以找到趁手的兵器,谢谢,也请路过的同志们留下买路钱,嘿嘿。

转载表明出处: hellokeykey.com hellokeykey工作室

郑重声明:资讯 【magento插件教程-2- magento计算器| magento开发| magento教程】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——