摘要:本次要做的就是,撰寫一個(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 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 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.phpgetConnection("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.phtmlUntitled 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
摘要:的版本中如何開啟調(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...
摘要:概述是一款遵循規(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...
摘要:簡(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)然...
摘要:五子棋游戲博客官網(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 ...
閱讀 879·2021-11-25 09:43
閱讀 1776·2021-09-29 09:42
閱讀 1956·2019-08-30 15:55
閱讀 3468·2019-08-30 15:54
閱讀 2678·2019-08-30 13:20
閱讀 3562·2019-08-29 13:25
閱讀 976·2019-08-28 18:03
閱讀 1840·2019-08-26 13:44