laravel mvc架構
http://www.golaravel.com/download/
下載下傳鏡像優化版:基于laravel 官方 github 倉庫源碼的基礎上安裝了依賴庫(vendor),頁面打開巨慢的問題我們把所有引用的google字型全部删掉了等。
我們說說laravel中model,controller,views的工作流程,也就是下面這個順序:
1.注冊路由 ---> 2.建立控制器 ---> 3. 控制器中擷取資料庫資料 ---> 4.在視圖中展示資料
1注冊路由,我們在<code>app/http/routes.php</code>中注冊了我們首頁的路由:<code></code>
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檔案對應的目錄),指令行執行:
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,指令行運作
php artisan make:model models/article
成功以後,修改 migration 檔案database/migrations/***_create_articles_table.php 的相應位置為:
schema::create('articles', function(blueprint $table)
{
$table->increments('id');
$table->string('url')->comment('回調通知位址');
$table->integer('times')->default(0)->index()->comment('通知次數');
$table->string('params')->comment('通知參數');
$table->tinyinteger('is_success')->default(0)->index()->comment('是否通知成功');
$table->timestamps();
});
之後運作:
php artisan migrate
去資料庫裡瞧瞧,articles 表已經躺在那兒啦。模型中加入
<?php namespace app\models;
use illuminate\database\eloquent\model;
class article extends model {
protected $table = 'articles'; //添加資料庫表名
public $timestamps = false; //關掉laravel内置時間戳
}
然後再調用模型
class articlecontroller extends controller
public function index()
{
$articles = article::all();
return $articles;
}
如果你直接傳回查找到得資料,因為laravel可能是出于這樣的考慮:一般這種情況下地傳回,通常都是在建立api功能,比如你為你的一個手機app寫的api一樣,json資料無疑是很好的選擇
這裡我們首先需要修改的是<code>articlecontroller</code>中的<code>index()</code>方法:
<?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->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
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的小函數,放在第三方函數庫裡面就行了
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請求方法。舉例來說:
<form action="/foo/bar" method="post">
<input type="hidden" name="_method" value="put">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
</form>
運作php artisan key:generate;前提是你項目根目錄下有個.env檔案.然後把根路徑下的.env.example的内容複制進去,再運作 php artisan key:generate
測試在項目根目錄下簡單運作 <code>phpunit</code> 指令即可
middleware是原來的路由filter的一個更新版,現在不用在filters.php裡定義過濾器,取而代之的是在 middleware目錄中建立類,并在kernel.php中配置全局還是可選,全局的middleware在每個請求都會執行,而可選的就相當于原來的filter,可以在路由中使用,也可以在控制器中使用。
illuminate/html
nonfu/awesome-laravel //github laravel精選資源大全
mccool/laravel-auto-presenter //mvp模式
swiggles/laravel-memcache //memcache擴充
xethron/migrations-generator //從現有資料庫生成表遷移,包括索引和外鍵!
nwidart/dbexporter //整個資料庫生成遷移,包括資料