亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

一個(gè)簡(jiǎn)單的Magento1.9模塊示例

Pikachu / 1336人閱讀

摘要:本次要做的就是,撰寫一個(gè)模塊,讓該模塊跑完整個(gè)的流程。創(chuàng)建模型,需要啟用模型,啟用資源模型,在資源模型中添加實(shí)體,再為資源模型設(shè)置讀寫適配器。

很多時(shí)候,不知道Magento模塊到底該怎么寫,比如ThinkPHP,YII框架,它是直接將控制器Controller中的所取得相關(guān)數(shù)據(jù)直接傳遞到視圖層View,而Magento雖然也是MVC三層,但是在中間多了布局對(duì)象Layout與區(qū)塊Block之間的關(guān)系,記錄下在學(xué)習(xí)Magento過程中的一些片段,以便共同學(xué)習(xí)。
本次要做的就是,撰寫一個(gè)magento模塊,讓該模塊跑完整個(gè)magento的流程。即通過config.xml配置文件,找到相應(yīng)控制器xxxxController,再到相應(yīng)方法xxxxAction,從控制器中實(shí)例化Model,查詢數(shù)據(jù)庫(kù),實(shí)例化Mysql4資源對(duì)象,通過布局layout下的xxx.xml配置,找到相應(yīng)的Block文件,在block中查收數(shù)據(jù),最后在template模板文件,調(diào)用Block中得到的數(shù)據(jù),顯示到前臺(tái)頁(yè)面。
1.新建目錄結(jié)構(gòu)

app
 |-code
 |-----local
 |----------Test
 |--------------News
 |------------------Block
 |------------------controllers
 |------------------etc
                     |----config.xml
 |------------------Helper
 |------------------Model

2.為magento加載該模塊,在etc/modules下添加配置文件Test_News.xml



    
        
            true
            local
        
    

3.查看magento是否加載到該模塊:

4.編寫配置文件etc/config.xml



    
        
            0.1.0
        
    
    
    
        

            
                standard
                
                    Test_News
                    news
                
            
        
    

5.寫控制器controllers/IndexController.php


通過url訪問,local.magento.com/news/index/index

可以看到:hello world。

6.接下來(lái),我們的目的是要從數(shù)據(jù)庫(kù)中查詢出數(shù)據(jù),這里,我們可以先不通過magento自帶的sql文件寫入,可以自己先在數(shù)據(jù)庫(kù)建個(gè)測(cè)試表,填充兩條記錄來(lái)進(jìn)行測(cè)試。

CREATE TABLE `blog_posts` ( 
    `blogpost_id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` text, 
    `post` text, 
    `date` datetime DEFAULT NULL, 
    `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY  (`blogpost_id`) 
);
INSERT INTO `blog_posts` VALUES (1,"My New Title","This is a blog post","2009-07-01 00:00:00","2009-07-02 23:12:30");
INSERT INTO `blog_posts` VALUES (2,"My Second Time","This is a blog post22","2019-11-01 00:10:03","2012-07-02 23:12:30");

7.創(chuàng)建模型,需要啟用模型,啟用資源模型,在資源模型中添加實(shí)體,再為資源模型設(shè)置讀、寫適配器。
依次建立好Model下的文件。
這里在配置文件config.xml中添加如下代碼:


        
            
                Test_News_Model
                news_mysql4

                
            
            
                Test_News_Model_Mysql4
                
                    
                        blog_posts
Test_News core_setup core_write core_read

Model文件夾的目錄結(jié)構(gòu)如下

Model
 |----News.php
 |----Mysql4
        |----News.php
        |----News
              |---Collection.php

為什么要這么創(chuàng)建,參見《深入理解Magento 第二章》
我們來(lái)填充下各個(gè)文件里面的代碼:
/Model/News.php

_init("news/news");
    }
}

/Model/Mysql4/News.php

_init("news/news","blogpost_id");
    }
}

/Model/Mysql4/News/Collection.php

_init("news/news");
    }
}

8.創(chuàng)建好Model后,繼續(xù)添加Helper和Block,在配置文件config.xml中添加


    
            
                Test_News_Block
            
        
        
            
                Test_News_Helper
            
        

/Helper/Data.php


9.這里,我們其實(shí)已經(jīng)可以查詢到數(shù)據(jù)庫(kù)中的內(nèi)容了,來(lái)測(cè)試下,在控制中添加如下代碼:

public function indexAction(){
         $read = Mage::getSingleton("core/resource")->getConnection("core_read");
         $sql = "select * from `blog_posts`";
         $result = $read->fetchAll($sql);
         print_r($result);
}

得到一個(gè)二維數(shù)組。

但是,我們的目的不是從控制器中返回,而是從模板頁(yè)面,所以,注釋掉控制器中的方法,我們?cè)贐lock中添加上述代碼。
/Block/News.php

getConnection("core_read");
         $sql = "select * from `blog_posts`";
         $result = $read->fetchAll($sql);
         return $result;
         //print_r($result);
    } 
}

10.這里遇到的問題是,得到了數(shù)據(jù),但是如何才能將數(shù)據(jù)傳遞到Template的phtml頁(yè)面,TP有$this->assign(),$this->display()來(lái)傳遞,magento是如何傳遞的呢?是否想過這個(gè)問題?我也在這里卡了很久,一直在說Magento的配置文件很強(qiáng)大,之前一直沒有體現(xiàn),這里的解決方式,還是magento的配置文件。
在design/frontend/rwd/default/layout文件夾下,新建local.xml,添加如下代碼:



    
    
        
            
        
    

這里解釋下含義:
news_index_index:表示news模塊下的IndexController下的indexAction;
表示引入模塊,name=“root”表示替換掉默認(rèn)的以name=“root”的模塊;
表示新建一個(gè)模塊,
type="news/news",表示從news模塊下,找block下的news.php文件,
template="news/blog_posts.phtml",表示在Template文件夾下,找到news/blog_posts.phtml文件。
11.在template文件夾下新建blog_posts.phtml




    Untitled
    


blog_posts Table

blogposts());?>//調(diào)用block中的blogposts方法

12.這里需要修改上面的indexAction控制器中的內(nèi)容,內(nèi)容如下:

class Test_News_IndexController extends Mage_Core_Controller_Front_Action
{
    public function indexAction()
    {
        //echo "hello world";
//        $read = Mage::getSingleton("core/resource")->getConnection("core_read");
//        $sql = "select * from `blog_posts`";
//        $result = $read->fetchAll($sql);
//        print_r($result);
        $this->loadLayout();
        $this->renderLayout();
    }
}

13.再次刷新頁(yè)面,到此為止,一個(gè)簡(jiǎn)單的模塊就跑通了,備注,開發(fā)過程中,最好在后臺(tái)將緩存關(guān)掉。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/21336.html

相關(guān)文章

  • Magento1如何打開調(diào)試模式,來(lái)顯示前臺(tái)路徑提示信息?

    摘要:的版本中如何開啟調(diào)試模式呢在前面,寫了一篇有關(guān)如何開啟調(diào)試模式來(lái)顯示前臺(tái)的路徑信息,便于在學(xué)習(xí)的時(shí)候,能快速的找到各個(gè)對(duì)應(yīng)的文件。但是,現(xiàn)在這個(gè)項(xiàng)目用的,在的版本中如何開啟調(diào)試模式呢兩種方法供參考方法一通過后臺(tái)控制臺(tái)來(lái)操作,選擇也選擇。 magento1.x的版本中如何開啟調(diào)試模式呢? 在前面,寫了一篇有關(guān)Magento2.0如何開啟調(diào)試模式來(lái)顯示前臺(tái)的路徑信息,便于在學(xué)習(xí)magent...

    hlcfan 評(píng)論0 收藏0
  • RequireJS:一款優(yōu)秀AMD模塊加載器

    摘要:概述是一款遵循規(guī)范協(xié)議的模塊加載器,不但能在瀏覽器端充分利用,同樣能在其他的運(yùn)行時(shí)環(huán)境,比如和。使用像這樣的模塊加載器能提高代碼的質(zhì)量和開發(fā)速度。一般放在頁(yè)面的入口出,用來(lái)加載其他的模塊。 RequireJS概述 RequireJS是一款遵循AMD規(guī)范協(xié)議的JavaScript模塊加載器, 不但能在瀏覽器端充分利用,同樣能在其他的JavaScript運(yùn)行時(shí)環(huán)境, 比如Rhino和No...

    syoya 評(píng)論0 收藏0
  • js 簡(jiǎn)易模塊加載器 示例分析

    摘要:簡(jiǎn)易模塊加載器示例點(diǎn)來(lái)了接下來(lái)我們先來(lái)看一段建議模塊加載器的示例代碼以上是加載器的實(shí)現(xiàn),再來(lái)看看如何使用吧你好啊要去杭州玩了章煒今天天氣不錯(cuò)噢在以上代碼中,我們定義了三個(gè)模塊,分別名為。 前端模塊化 關(guān)注前端技術(shù)發(fā)展的各位親們,肯定對(duì)模塊化開發(fā)這個(gè)名詞不陌生。隨著前端工程越來(lái)越復(fù)雜,代碼越來(lái)越多,模塊化成了必不可免的趨勢(shì)。 各種標(biāo)準(zhǔn) 由于javascript本身并沒有制定相關(guān)標(biāo)準(zhǔn)(當(dāng)然...

    miqt 評(píng)論0 收藏0
  • React 官網(wǎng)示例實(shí)現(xiàn) + 五子棋 + 簡(jiǎn)單文章發(fā)表 demo

    摘要:五子棋游戲博客官網(wǎng)示例實(shí)現(xiàn)源碼之前一直在用,前幾天看了下的官方文檔,寫了個(gè)加強(qiáng)對(duì)的理解,歡迎指正。五子棋游戲該模塊實(shí)現(xiàn)了五子棋和井字游戲兩個(gè)游戲。五子棋游戲只記錄了最近步的數(shù)據(jù),步以前的數(shù)據(jù)不會(huì)記錄,故悔棋只可悔步以內(nèi)的棋。 五子棋游戲 + 博客 demo + React官網(wǎng)示例實(shí)現(xiàn) github 源碼:https://github.com/moshang-xc/react-demo ...

    Astrian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<