国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一個簡單的Magento1.9模塊示例

Pikachu / 1269人閱讀

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

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

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.接下來,我們的目的是要從數據庫中查詢出數據,這里,我們可以先不通過magento自帶的sql文件寫入,可以自己先在數據庫建個測試表,填充兩條記錄來進行測試。

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.創建模型,需要啟用模型,啟用資源模型,在資源模型中添加實體,再為資源模型設置讀、寫適配器。
依次建立好Model下的文件。
這里在配置文件config.xml中添加如下代碼:


        
            
                Test_News_Model
                news_mysql4

                
            
            
                Test_News_Model_Mysql4
                
                    
                        blog_posts
Test_News core_setup core_write core_read

Model文件夾的目錄結構如下

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

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

_init("news/news");
    }
}

/Model/Mysql4/News.php

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

/Model/Mysql4/News/Collection.php

_init("news/news");
    }
}

8.創建好Model后,繼續添加Helper和Block,在配置文件config.xml中添加


    
            
                Test_News_Block
            
        
        
            
                Test_News_Helper
            
        

/Helper/Data.php


9.這里,我們其實已經可以查詢到數據庫中的內容了,來測試下,在控制中添加如下代碼:

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

得到一個二維數組。

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

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

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



    
    
        
            
        
    

這里解釋下含義:
news_index_index:表示news模塊下的IndexController下的indexAction;
表示引入模塊,name=“root”表示替換掉默認的以name=“root”的模塊;
表示新建一個模塊,
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());?>//調用block中的blogposts方法

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

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.再次刷新頁面,到此為止,一個簡單的模塊就跑通了,備注,開發過程中,最好在后臺將緩存關掉。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21336.html

相關文章

  • Magento1如何打開調試模式,來顯示前臺路徑提示信息?

    摘要:的版本中如何開啟調試模式呢在前面,寫了一篇有關如何開啟調試模式來顯示前臺的路徑信息,便于在學習的時候,能快速的找到各個對應的文件。但是,現在這個項目用的,在的版本中如何開啟調試模式呢兩種方法供參考方法一通過后臺控制臺來操作,選擇也選擇。 magento1.x的版本中如何開啟調試模式呢? 在前面,寫了一篇有關Magento2.0如何開啟調試模式來顯示前臺的路徑信息,便于在學習magent...

    hlcfan 評論0 收藏0
  • RequireJS:一款優秀AMD模塊加載器

    摘要:概述是一款遵循規范協議的模塊加載器,不但能在瀏覽器端充分利用,同樣能在其他的運行時環境,比如和。使用像這樣的模塊加載器能提高代碼的質量和開發速度。一般放在頁面的入口出,用來加載其他的模塊。 RequireJS概述 RequireJS是一款遵循AMD規范協議的JavaScript模塊加載器, 不但能在瀏覽器端充分利用,同樣能在其他的JavaScript運行時環境, 比如Rhino和No...

    syoya 評論0 收藏0
  • js 簡易模塊加載器 示例分析

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

    miqt 評論0 收藏0
  • React 官網示例實現 + 五子棋 + 簡單文章發表 demo

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

    Astrian 評論0 收藏0

發表評論

0條評論

Pikachu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<