路由
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', 'StaticPagesController@home')->name('home');
Route::get('/help', 'StaticPagesController@help')->name('help');
Route::get('/about', 'StaticPagesController@about')->name('about');
<li><a href="{{ route('help') }}">帮助</a></li>
查看路由列表
php artisan route:list
Laravel 提供了 resource
方法来定义路由
<?php
use Illuminate\Support\Facades\Route;
Route::resource('users', 'UsersController');
Route::resource()
方法可以遵从 RESFUL 架构为用户资源生成路由。该方法接受两个参数,第一个参数为资源名称,第二个是控制器名称。
以上代码等同于:
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 | 创建用户的页面 |
GET | /users/{users}/edit | UsersController@edit | 编辑用户个人资料页面 |
PATCH | /users/{user} | UsersController@update | 更新用户 |
DELETE | /users/{user} | UsersController@destroy | 删除用户 |
应用
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class UsersController extends Controller
{
public function create()
{
return view('users.create');
}
public function show(User $user)
{
return view('users.show', compact('user'));
}
}
Laravel 会自动解析定义在控制器方法中的 Eloquent 模型声明。以上代码的 show
方法中的 Eloquent 模型 User
对应的变量名 $user
会匹配路由片段中的 {user}
,Laravel 会自动注入与请求 URI 中传入的 ID 对应的用户模型实例。
此功能称为 「隐性路由模型绑定」,是 「约定优于配置」 范式的体现,同时满足以下两种情况,此功能会自动启用。
- 路由声明时必须使用 Eloquent 模型的单数小写格式来作为路由片段参数, User 对应
{user}
。 - 控制器方法参数中必须包含对应的 Eloquent 模型类型声明,并且是有序的。
当请求 weibo.test/user/1 满足以上两个条件时,Laravel 会自动查询 ID 为 1 的用户并赋值到变量 $user
中,如果数据库中找不到对应模型实例,会生成 HTTP 404 响应。
return view('users.show', compact('user'));
将用户对象 $user
通过 compact
方法转换为一个关联数组并作为第二个参数传递给 view
方法,将数据与视图进行绑定。
resource 限制
如果使用 resource 方法定义微博路由,会生成完整的符合 RESTful 架构的路由,可以对 resource
传参 only
键指定只生成某几个动作的路由,例如:
Route::resource('statuses', 'StatusesController', ['only' => ['store', 'destroy']]);
HTTP 请求 | URL | 动作 | 作用 |
---|---|---|---|
POST | /statuses | StatusesController@store | 创建微博 |
DELETE | /statuses/{status} | StatusesController@destroy | 删除微博 |
更多精彩内容:各种AI课程、技能课程、黑科技软件、网站小程序源码、副业小项目、PPT模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。