Laravel 可以通过在路由后面链式调用 name 方法来为路由指定名称:
Route::get('/help', 'xxxxxController@help')->name('help');
当我们在页面渲染该路由时, {{route('help') }} 最终的渲染结果将如下:
Laravel 为我们提供了 resource 方法来定义用户资源路由:
Route::resource('users', 'UsersController'); //第一个参数为资源名称,第二个参数为控制器名称
上面代码将等同于:
Route::get('/users', 'UsersController@index')->name('users.index');
Route::get('/users/create', 'UsersController@create')->name('users.create');
Route::get('/users/{user}', 'UsersController@show')->name('users.show');
Route::post('/users', 'UsersController@store')->name('users.store');
Route::get('/users/{user}/edit', 'UsersController@edit')->name('users.edit');
Route::patch('/users/{user}', 'UsersController@update')->name('users.update');
Route::delete('/users/{user}', 'UsersController@destroy')->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 | 删除用户 |
两个路由的命名完全一致,不同的操作动作:
Route::get('login', 'SessionController@create')->name('login');
Route::post('login', 'SessionController@store')->name('login');
resource 传参 only 键指定只生成某几个动作的路由:
Route::resource('statuses', 'StatusesController', ['only' => ['store', 'destroy']]);
传递参数的路由:
Route::get('/users/{user}/followings', 'UsersController@followings')->name('users.followings');
Route::post('/users/followers/{user}', 'FollowersController@store')->name('followers.store');
Route::delete('/users/followers/{user}', 'FollowersController@destroy')->name('followers.delete');
对应blade: {{route('users.followings', $user->id)}}
『约定优于配置』(convention over configuration),也称作按约定编程,这是一种软件设计范式,旨在
减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。如果所用工具的约定与你的期待
相符,便可省去配置;反之,你可以配置来达到你所期待的方式。
引用静态文件: <link rel="stylesheet" href="{{URL::asset('/css/app.css')}}">
表单:
<div class="text-center mt-2 mb-4">
@if (Auth::user()->isFollowing($user->id))
<form action="{{ route('followers.destroy', $user->id) }}" method="post">
{{ csrf_field() }} //防止表单重复提交 TOKEN验证
{{ method_field('DELETE') }} //RESTful 架构中创建隐藏域使用 DELETE 请求来删除一个资源
<button type="submit" class="btn btn-sm btn-outline-primary">取消关注</button>
</form>
@else
<form action="{{ route('followers.store', $user->id) }}" method="post">
{{ csrf_field() }}
<button type="submit" class="btn btn-sm btn-primary">关注</button>
</form>
@endif
</div>