寫在 routes/web.php
Route::get('foo', function () {
return 'welcome';
});
Route::get('test', function () {
return view('test');
});
與在 resources/views/test.blade.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>TEST</title>
</head>
<body>
<a href="#">TEST</a>
</body>
</html>
接收必要參數Route::get('posts/{id}', function ($id) {
return 'Post:'.$id;
});
接收選擇性參數
Route::get('users/{name?}', function ($name = 'John') {
return 'My name is '.$name;
});
限制參數格式
1.使用 where 限制
Route::get('posts/{id}', function ($id) {
return 'Post:'.$id;
})->where('id','[0-9]+');
2.使用 pattern 限制1.使用 where 限制
Route::get('posts/{id}', function ($id) {
return 'Post:'.$id;
})->where('id','[0-9]+');
Route::pattern('id','[0-9]+');
Route::get('posts/{id}', function ($id) {
return 'Post:'.$id;
})->where('id','[0-9]+');
打上 192.168.81.210/posts/John 則會出現錯誤訊息
列出目前所有的orute 規則
$ php artisn route:list
Route Prefixing
設定某些Route前都有共同的前置uri
Route::group(['prefix'=>'admin'],function(){
Route::get('users',function(){
return 'abc';
});
});
Sub-Domain Routing
限制Route只能在某個Sub-Domain 才接受
Route::group(['domin'=>'192.168.81.210'],function(){
Route::get('{user}/{id}',function($user,$id){
return $user.' '.$id;
});
});
今天依照網站架構圖,做一下練習
在這個階段的實作裡,直接在Route裡回傳字串,以確認把通道打開。裡面的程式碼為
Route::get('/',['as'=>'home.index',function(){
return 'home.index';
}]);
Route::get('about/',['as'=>'about.index',function(){
return 'about.index';
}]);
Route::post('posts/',['as'=>'posts.store',function(){
return 'posts.store';
}]);
Route::get('posts/',['as'=>'posts.index',function(){
return 'posts.index';
}]);
Route::get('posts/create',['as'=>'posts.create',function(){
return 'posts.create';
}]);
Route::delete('posts/{id}',['as'=>'posts.destory',function($id){
return $id.'.posts.destory';
}]);
Route::patch('posts/{id}',['as'=>'posts.update',function($id){
return $id.'.posts.update';
}]);
Route::get('posts/{id}',['as'=>'posts.show',function($id){
return 'posts.show';
}]);
Route::post('posts/{id}/comment/',['as'=>'posts.comment',function($id){
return $id.'.posts.comment';
}]);
Route::get('posts/{id}/edt',['as'=>'posts.edit',function($id){
return $id.'.posts.edit';
}]);
Route::get('hot/',['as'=>'hot.index',function(){
return 'hot.index';
}]);
Route::get('random/',['as'=>'random.index',function(){
return 'random.index';
}]);
CSRF 保護
Laravel 提供簡易的方法,讓您可以保護您的應用程式不受到 CSRF (跨網站請求偽造) 攻擊。跨網站請求偽造是一種惡意的攻擊,藉以代表經過身份驗證的使用者執行未經授權的命令。
Laravel 會自動在每一位使用者的 session 中放置隨機的 token ,這個 token 將被用來確保經過驗證的使用者是實際發出請求至應用程式的使用者:
插入 CSRF Token 到表單
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
當然也可以在 Blade 模板引擎使用:
<input type="hidden" name="_token" value="{{ csrf_token() }}">
您不需要手動驗證在 POST、PUT、DELETE 請求的 CSRF token。 VerifyCsrfToken HTTP 中介層將儲存在 session 中的請求輸入的 token 配對來驗證 token 。
除了尋找 CSRF token 作為「POST」參數,中介層也檢查 X-XSRF-TOKEN 請求標頭,這在多數 Javascript framework 常被拿來使用。
方法欺騙
HTML 表單沒有支援 PUT 或 DELETE 動作。所以當定義 PUT 或 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>
1.PHP Laravel 開發入門(四) – 路由(Routes)
http://www.codedata.com.tw/uncategorized/php-laravel-dev-tutorial-3-class-artisan/
2.Route 路由控制
http://www.slideshare.net/shengyou/6-route?ref=http://www.laravel-dojo.com/workshops/201507-ntpc
3.HTTP 路由
https://wastemobile.gitbooks.io/laravel-5-chinese-document/content/routing.html