天天看點

Laravel MVC的基本流程Laravel5常用的包 github.com

laravel mvc架構

Laravel MVC的基本流程Laravel5常用的包 github.com

http://www.golaravel.com/download/  

下載下傳鏡像優化版:基于laravel 官方 github 倉庫源碼的基礎上安裝了依賴庫(vendor),頁面打開巨慢的問題我們把所有引用的google字型全部删掉了等。

我們說說laravel中model,controller,views的工作流程,也就是下面這個順序:

Laravel MVC的基本流程Laravel5常用的包 github.com

1.注冊路由 ---> 2.建立控制器 ---> 3. 控制器中擷取資料庫資料 ---> 4.在視圖中展示資料  

1注冊路由,我們在<code>app/http/routes.php</code>中注冊了我們首頁的路由:<code></code>

Laravel MVC的基本流程Laravel5常用的包 github.com

route::get('/', 'articlecontroller@index'); //首頁  

route::get('articles/{id}', 'articlecontroller@show'); //get路由  

route::post('article/update', 'articlecontroller@update'); //post路由  

route::resource('photo', 'photocontroller'); //restful  

可以直接使用這個路由,是以我們可以進入下一步。

2建立控制器,建立控制器的時候你可以手動建立,不過還是推薦使用artisan這個指令行工具,在項目目錄之下(項目中的artisan檔案對應的目錄),指令行執行:

Laravel MVC的基本流程Laravel5常用的包 github.com

php artisan make:controller articlecontroller --plain  

//php artisan make:controller photocontroller --resource //5.2 restful  

這裡需要說明的是<code>--plain</code>這個參數表明隻要一個簡單的controller,裡面不需要生成一堆如<code>show()</code>,<code>create()</code>等方法。

建立模型,首先我們要建立一張表來存儲 article,指令行運作

Laravel MVC的基本流程Laravel5常用的包 github.com

php artisan make:model models/article  

成功以後,修改 migration 檔案database/migrations/***_create_articles_table.php 的相應位置為:

Laravel MVC的基本流程Laravel5常用的包 github.com

schema::create('articles', function(blueprint $table)  

{  

    $table-&gt;increments('id');  

    $table-&gt;string('url')-&gt;comment('回調通知位址');  

    $table-&gt;integer('times')-&gt;default(0)-&gt;index()-&gt;comment('通知次數');  

    $table-&gt;string('params')-&gt;comment('通知參數');  

    $table-&gt;tinyinteger('is_success')-&gt;default(0)-&gt;index()-&gt;comment('是否通知成功');  

    $table-&gt;timestamps();  

});  

之後運作:

Laravel MVC的基本流程Laravel5常用的包 github.com

php artisan migrate  

去資料庫裡瞧瞧,articles 表已經躺在那兒啦。模型中加入

Laravel MVC的基本流程Laravel5常用的包 github.com

&lt;?php namespace app\models;  

use illuminate\database\eloquent\model;  

class article extends model {  

    protected $table = 'articles'; //添加資料庫表名  

    public $timestamps = false;  //關掉laravel内置時間戳  

}  

 然後再調用模型

Laravel MVC的基本流程Laravel5常用的包 github.com

class articlecontroller extends controller  

    public function index()  

    {  

        $articles = article::all();  

        return $articles;  

    }  

如果你直接傳回查找到得資料,因為laravel可能是出于這樣的考慮:一般這種情況下地傳回,通常都是在建立api功能,比如你為你的一個手機app寫的api一樣,json資料無疑是很好的選擇

這裡我們首先需要修改的是<code>articlecontroller</code>中的<code>index()</code>方法:

Laravel MVC的基本流程Laravel5常用的包 github.com

&lt;?php  

namespace app\http\controllers;  

use illuminate\http\request;  

use illuminate\routing\controller; //不驗證時使用 2選1  

//use app\http\controllers\controller; //use validatesrequests validate  

    /** 

     * 顯示清單資料 

     * 

     * @param request $request 

     * @return response 

     */  

    public function index(request $request)  

        //$id = $request-&gt;input('id');  

        return view('articles.index', compact('articles'));  

     * update the specified article. 

     * @param  request $request 

     * @param  int $id 路由參數傳入的輸入資料,隻需要将路由參數置于其他依賴之後 

    public function update(request $request, $id)  

我們隻是修改了return這一行的代碼,使用<code>view()</code>方法加載視圖,這個視圖就是位于<code>resources/views/articles/</code>中的<code>index.blade.php(</code><code>用的是blade模闆引擎)</code>,最後使用<code>compact('articles')</code>将資料傳給視圖檔案。

路由直接通路view

Laravel MVC的基本流程Laravel5常用的包 github.com

route::get('/', function () {  

    return view('welcome');  

當使用者發送一個get請求通路我們站點的根目錄的時候,直接通路這個試圖檔案位于<code>resources/views/welcome.blade.php</code>

laravel項目下面有4個檔案夾:<code>app</code>、<code>bootstrap</code>、<code>public</code>、<code>vendor</code>,這4個檔案夾下面又有很多個子檔案夾,當你第一次看到這麼豐富的檔案夾内容時,是不是覺得很有壓力?沒關系,我們會逐一的來了解不同的檔案夾。

<code>app</code> 包含了站點的controllers(控制器),models(模型),views(視圖)和assets(資源)。這些是網站運作的主要代碼,你會将你大部分的時間花在這個目錄裡。

<code>bootstrap</code> 用來存放系統啟動時需要的檔案,這些檔案會被如index.php這樣的檔案調用。

<code>public</code> 這個檔案夾是唯一外界可以看到的web伺服器的目錄。它含有laravel架構核心的引導檔案index.php,這個目錄也可用來存放任何可以公開的靜态資源,如css,javascript,images等

<code>vender</code>包含composer指令相關管理檔案,包含了許多php相關的app應用程式

laravel 擷取最後一條sql的小函數,放在第三方函數庫裡面就行了

Laravel MVC的基本流程Laravel5常用的包 github.com

function lastsql()  

    $queries = db::getquerylog();  

    $a = end($queries);  

    $tmp = str_replace('?', '"' . '%s' . '"', $a["query"]);  

    return vsprintf($tmp, $a['bindings']);  

方法欺騙:讓html表單實作restful

html表單沒有支援 put 、patch 或 delete 請求。是以當定義 put 、patch 以及 delete 路由并在 html 表單中被調用的時候,您将需要添加隐藏 _method 字段在表單中。發送的 _method 字段對應的值會被當做http請求方法。舉例來說:

Laravel MVC的基本流程Laravel5常用的包 github.com

&lt;form action="/foo/bar" method="post"&gt;  

    &lt;input type="hidden" name="_method" value="put"&gt;  

    &lt;input type="hidden" name="_token" value="&lt;?php echo csrf_token(); ?&gt;"&gt;  

&lt;/form&gt;  

Laravel MVC的基本流程Laravel5常用的包 github.com

運作php artisan key:generate;前提是你項目根目錄下有個.env檔案.然後把根路徑下的.env.example的内容複制進去,再運作 php artisan key:generate

測試在項目根目錄下簡單運作 <code>phpunit</code> 指令即可

middleware是原來的路由filter的一個更新版,現在不用在filters.php裡定義過濾器,取而代之的是在 middleware目錄中建立類,并在kernel.php中配置全局還是可選,全局的middleware在每個請求都會執行,而可選的就相當于原來的filter,可以在路由中使用,也可以在控制器中使用。

Laravel MVC的基本流程Laravel5常用的包 github.com

illuminate/html  

nonfu/awesome-laravel //github laravel精選資源大全  

mccool/laravel-auto-presenter //mvp模式  

swiggles/laravel-memcache //memcache擴充  

xethron/migrations-generator //從現有資料庫生成表遷移,包括索引和外鍵!  

nwidart/dbexporter //整個資料庫生成遷移,包括資料