? Laravel新手系列的第二篇文章来了!让我们直接进入主题!
Laravel中的路由机制定义了应用程序如何响应用户请求。当用户访问URL或提交表单时,Laravel的路由系统决定下一步做什么。这可能包括返回视图、执行控制器操作或处理数据。
Laravel的路由处理在routes文件夹中,特别是在web.php和api.php等文件中。
web请求的路由定义在routes/web.php文件中,API请求的路由定义在routes/api.php文件中。
<code>Route::get('/', function () { return view('welcome'); });</code>
假设您正在构建一个博客应用程序,用户可以在其中查看帖子列表、查看单个帖子的详细信息以及添加新帖子。
这里,/posts路由获取帖子列表并将它们传递给posts.index视图。
<code>Route::get('/posts', function () { $posts = [ ['id' => 1, 'title' => '第一篇文章', 'content' => '这是第一篇文章的内容。'], ['id' => 2, 'title' => '第二篇文章', 'content' => '这是第二篇文章的内容。'] ]; return view('posts.index', ['posts' => $posts]); });</code>
这里,/posts/{id}路由通过ID动态获取帖子并返回详细视图。如果帖子不存在,则显示Laravel的默认404错误。
<code>Route::get('/posts/{id}', function ($id) { $posts = [ 1 => ['title' => '第一篇文章', 'content' => '这是第一篇文章的内容。'], 2 => ['title' => '第二篇文章', 'content' => '这是第二篇文章的内容。'] ]; if (!isset($posts[$id])) { abort(404, '帖子未找到'); } return view('posts.show', ['post' => $posts[$id]]); });</code>
/posts路由处理添加新帖子的表单提交。
<code>Route::post('/posts', function () { // 添加新帖子的逻辑 return '已添加新帖子!'; });</code>
Laravel提供各种方法来为不同的HTTP动词定义路由。
<code>Route::post('/submit', function () { return '表单已提交!'; }); Route::put('/update', function () { return '数据已更新!'; }); Route::delete('/delete', function () { return '数据已删除!'; });</code>
使用控制器有助于保持路由文件简洁易维护。 这里,UserController@index处理/users路由的逻辑。
<code>Route::get('/users', [UserController::class, 'index']);</code>
命名的路由允许您按名称而不是URL引用路由,这在URL更改时特别有用。
<code>Route::get('/dashboard', [DashboardController::class, 'index'])->name('dashboard');</code>
然后,您可以生成此路由的URL:
<code>$url = route('dashboard');</code>
您可以在路由中传递动态参数。
必需参数
<code>Route::get('/user/{id}', function ($id) { return '用户ID:' . $id; });</code>
可选参数
<code>Route::get('/', function () { return view('welcome'); });</code>
中间件可以在处理请求之前限制访问或执行操作。
<code>Route::get('/posts', function () { $posts = [ ['id' => 1, 'title' => '第一篇文章', 'content' => '这是第一篇文章的内容。'], ['id' => 2, 'title' => '第二篇文章', 'content' => '这是第二篇文章的内容。'] ]; return view('posts.index', ['posts' => $posts]); });</code>
在此示例中,只有经过身份验证的用户才能访问/profile路由。
路由组允许您应用共享属性,例如中间件或前缀。这里,组内的所有路由都共享admin前缀和auth中间件。
<code>Route::get('/posts/{id}', function ($id) { $posts = [ 1 => ['title' => '第一篇文章', 'content' => '这是第一篇文章的内容。'], 2 => ['title' => '第二篇文章', 'content' => '这是第二篇文章的内容。'] ]; if (!isset($posts[$id])) { abort(404, '帖子未找到'); } return view('posts.show', ['post' => $posts[$id]]); });</code>
Laravel可以自动将路由参数绑定到Eloquent模型。 在这种情况下,Laravel检索与{post}参数对应的Post模型。
Laravel使用其内置工具轻松测试路由。您可以使用php artisan route:list查看应用程序中所有已定义的路由。 此命令显示路由方法、URI和已分配中间件等详细信息。
<code>Route::post('/posts', function () { // 添加新帖子的逻辑 return '已添加新帖子!'; });</code>
Laravel的路由系统是一个强大而灵活的工具,它简化了Web开发。通过理解基础知识并利用高级特性(如中间件、命名路由和路由模型绑定),您可以创建简洁、高效且易于维护的应用程序。
这里有Laravel很棒且做得非常好的文档。
附注:如果您觉得这篇文章有帮助,请点赞并分享!如果您对我有什么问题,请留言!我很乐意与您聊天!:)
下周我们将推出下一篇文章!
以上是了解Laravel&#s路由系统[Laravel初学者系列|第2部分]的详细内容。更多信息请关注PHP中文网其他相关文章!