Laravel 路由

[toc]

路由

创建路由

路由文件位于 routes/web.php

在 Laravel 中我们较为常用的几个基本的 HTTP 操作分别为 GET、POST、PATCH、DELETE。

GET 常用于页面读取
POST 常用于数据提交
PATCH 常用于数据更新
DELETE 常用于数据删除

注册路由:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

例:
Route::get('/test','TestController@test');
访问 /test 时调用 TestController 控制器的 test方法

表单方法伪造

<form action="/foo/bar" method="POST">
    <p>伪造一个put方法 其他方法只需要修改下面input的value </p>
    <input type="hidden" name="_method" value="PUT">
    <!--patch delete options-->
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

CSRF 保护

指向 web 路由文件中定义的 POST、PUT 或 DELETE 路由的任何 HTML 表单都应该包含一个 CSRF 令牌字段,否则,这个请求将会被拒绝。

<form method="POST" action="/profile">
    {{ csrf_field() }}
</form>

{{ csrf_field() }}该方法会生成一个隐藏的input 里面有CSRF的token

<input type="hidden" name="_token" value="这里是token">

参数路由

Route::get('test/{var}','TestController@test');
Route::get('test2/{var?}', function (var = null) {
    return $var;
});

其中的{var}为参数
在控制器中可以通过 $request->var 获取

第二个路由为可选参数路由 但是其指必须有默认值

use Illuminate\Http\Request;
`
`
pubcli function test(Request $request ){
    $var =$request-&gt;var;
}

命名路由

Route::get('test/{var}','TestController@test')-&gt;name('test');

name方法给路由取了个名字
调用:

route('test');

资源路由

Route::resource('users', 'UsersController');
// 上面代码将等同于:

Route::get('/users', 'UsersController@index')-&gt;name('users.index'); //显示所有用户列表的页面
Route::get('/users/create', 'UsersController@create')-&gt;name('users.create');  //创建用户的页面
Route::get('/users/{user}', 'UsersController@show')-&gt;name('users.show');  //显示用户个人信息的页面
Route::post('/users', 'UsersController@store')-&gt;name('users.store');  //创建用户
Route::get('/users/{user}/edit', 'UsersController@edit')-&gt;name('users.edit');  //编辑用户个人资料的页面
Route::patch('/users/{user}', 'UsersController@update')-&gt;name('users.update');  //更新用户
Route::delete('/users/{user}', 'UsersController@destroy')-&gt;name('users.destroy');  //删除用户

生成的资源路由列表信息如下所示:

HTTP 请求 URL 动作 作用
GET /users UsersController@index 显示所有用户列表的页面
GET /users/{user} UsersController@show 显示用户个人信息的页面
GET /users/create UsersController@create 创建用户的页面
POST /users UsersController@store 创建用户
GET /users/{user}/edit UsersController@edit 编辑用户个人资料的页面
PATCH /users/{user} UsersController@update 更新用户
DELETE /users/{user} UsersController@destroy 删除用户

你可以通过将数组传参到 resources 方法中的方式来一次性的创建多个资源控制器:

Route::resources([
    'photos' =&gt; 'PhotoController',
    'posts' =&gt; 'PostController'
]);

声明资源路由时,你可以指定控制器应该处理的部分行为,而不是所有默认的行为:

//只创建部分行为
Route::resource('photos', 'PhotoController')-&gt;only([
    'index', 'show'
]);
//部分行为除外
Route::resource('photos', 'PhotoController')-&gt;except([
    'create', 'store', 'update', 'destroy'
]);

本文链接:

https://www.antixu.com/archives/362/
1 + 2 =
快来做第一个评论的人吧~