一、基本route
Route::get('foo', function () {
return 'Hello World';
});
二、所有的method (http verbs請求)
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
put,patch,delete,options請求用
<input type="hidden" name="_method" value="PUT">
或
{{ method_field('PATCH') }}
範例:
編輯 ./routes/web.php
Route::get('test','TestController@index');
新增controller
php artisan make:controller TestController --resource
編輯 ./app/Http/Controllers/TestController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class TestController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
echo "測試一下!";
}
...
三、若有多個method
Route::match(['get', 'post'], '/', function () { // });
四、若代表全部method
Route::any('foo', function () { // });
五、防範CSRF攻擊
會自動驗證token在post,put,delete請求
<form method="POST" action="/profile">
<input type="hidden" value="'.csrf_token().'" name="_token">
...
</form>
https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0
或
{{ csrf_field() }}
或
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
或在blade樣板
<input type="hidden" name="_token" value="{{ csrf_token() }}">
六、帶參數
//單一參數
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
//多參數
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
//可預設參數,此時name可有可無
Route::get('user/{name?}', function ($name = 'John') {
return $name;
});
//限制參數
Route::get('user/{id}', function ($id) {
return $name;
})->where('id','[0-9]+');
//如果大批where對id,以下所有route的id,都循[0-9]+的正規
Route::pattern('id','[0-9]+');
七、命名路由
Route::get('user/profile所命名', function () {
//
})->name('frofile');
或 Route::get('user/profile', 'UserController@showProfile')->name('profile');
//尚未了解用法
$url = route('profile', ['id' => 1]);
//5.2版前的用法
Route::get('user/profile', ['as' => 'user.profile', 'uses' => 'TestController@index']);
八、群組
使用 Route::group
列如:
Route::group(['middleware' =>'{auth}'],function(){
Route::get('/',function(){
//程式碼
});
Route::get('user/profile',function(){
//程式碼
});
);
});
九、前綴
URI路徑就有一個前綴
Route::group(['prefix' => 'admin'], function () {
Route::get('users', function () {
// Matches The "/admin/users" URL
});
});
沒有留言:
張貼留言