Laravel5.2中HTTP路由、创建控制器和资源路由的介绍(附代码)
发布时间 - 2019-01-19 00:00:00 点击率:次本篇文章给大家带来的内容是关于laravel5.2中http路由、创建控制器和资源路由的介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一、HTTP路由
所有路由都定义在 App\Providers\RouteServiceProvider 类载入的 app/Http/routes.php文件中。
1. 基本路由
简单的 Laravel 路由只接受一个 URI 和一个闭包
Route::get('foo', function () {
return 'Hello, Laravel!';
});
对于常见的 HTTP 请求,Laravel 有以下几种路由
Route::get($uri, $callback); //响应 get 请求
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
Route::match(['get', 'post'], $uri, $callback); //响应 get, post 请求
Route::any('foo', $callback); //响应所有请求
其中,$callback 可以是一个闭包,也可以是一个控制器方法。实际上,在开发中有不少情况是用作控制器方法的。
2. 路由参数
//单个路由参数
Route::get('user/{id}', function ($id) {
return 'User '.$id;
});
//多个路由参数
Route::get('posts/{post}/comments/{comment}', function ($postId, $commentId) {
//
});
//单个路由参数(可选)
Route::get('user/{id?}', function ($id = 1) {
return 'User '.$id;
});
//多个路由参数(可选)
Route::get('posts/{post}/comments/{comment?}', function ($postId, $commentId = 1) {
//
});
//注意:多个参数时,只可以对最后一个参数设置可选,其他位置设置可选会解析错误
// 正则约束单个参数
Route::get('user/{name?}', function ($name = 'Jone') {
return $name;
})->where('name', '\w+'); //约束参数为单词字符(数字、字母、下划线)
// 正则约束多个参数
Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);二、创建控制器
使用 Artisan 命令创建 php artisan make:controller UserController
现在,在 app/Http/Controllers 这个控制器目录下就生成了 UserController.php 的控制器文件。
三、高级路由
1. 命名路由
//命名闭包路由
Route:get('user', array('as' => 'alial', function(){});
//或 name 方法链
Route:get('user', function(){})->name('alias');
//命名控制器方法路由
Route:get('user', array('uses' => 'Admin\IndexController@index', 'as' => 'alias'));
//或 name 方法链
Route:get('user', 'Admin\IndexController@index')->name('alias'));2. 路由分组
2.1 路由前缀和命名空间
例如,有两条指向控制器方法的路由
Route::get('admin/login', 'Admin\IndexController@login');
Route::get('admin/index', 'Admin\IndexController@index');拿第一条来说,
参数一:admin/login 表示这个 URI 在请求网站根目录下的 admin/login 资源,完整地址就是 http://域名/admin/login (这里开启了 Apache 的路由重写,隐藏了 “index.php“ ),这个请求被映射到第二个参数中指定的控制器方法。注意,网站根目录是入口文件所在目录,在 Laravel 中就是 public 目录,配置服务器时最好也指向这里。
参数二:Admin\IndexController@login 表示这个控制器方法是在 App\Http\Controllers 命名空间下的,连起来就是 App\Http\Controllers\Admin\IndexController 控制器里的 login 方法。
显然,两条路由的 URI 和 控制器方法 都有相同的部分,那么,启用路由分组可以提取出公共部分:
// 第一个数组参数中,prefix 键定义 URI 的公共部分,namespace 键定义方法名(命名空间语法)的公共部分
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){
Route::get('login', 'IndexController@login');
Route::get('index', 'IndexController@index');
});2.2 资源路由
资源路由就是映射到资源控制器的路由,Laravel 资源控制器内置了对资源增删改查的 7 个方法以及 7 条路由。
首先,创建资源控制器 ArticleController
php artisan make:controller Admin/ArticleController --resource
这样就生成了资源控制器在 app/Http/Controllers/Admin/ArticleController.php 文件(Admin 文件夹不存在时会自动创建),内置的 7 个方法如下 :
id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* 显示一个表单来编辑指定的资源
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* 更新指定的资源
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* 删除指定的资源
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}
然后,定义资源路由 。这里我还是选择在路由分组下定义,定义一条就好
Route::group(array('prefix' => 'admin', 'namespace' => 'Admin'), function(){
Route::get('login', 'IndexController@login');
Route::get('index', 'IndexController@index');
// 资源路由
Route::resource('article', 'ArticleController');
});最后,查看路由。有了资源控制器 和 资源路由,就可以看一下对以上 7 个方法的 HTTP 请求方式了。
使用 Artisan 命令 php artisan route:list 列出当前的所有路由,请求方式、URI、控制器方法、中间件都罗列出来了。
# 多个
# 可选
# 是一个
# 两条
# 表单
# 是在
# 都有
# 就好
# 中有
# 下划线
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何在宝塔面板中创建新站点?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
JavaScript数据类型有哪些_如何准确判断一个变量的类型
如何在Windows环境下新建FTP站点并设置权限?
如何使用 jQuery 正确渲染 Instagram 风格的标签列表
如何在阿里云购买域名并搭建网站?
,交易猫的商品怎么发布到网站上去?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
C#如何调用原生C++ COM对象详解
如何在云主机上快速搭建网站?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
如何快速辨别茅台真假?关键步骤解析
如何在新浪SAE免费搭建个人博客?
android nfc常用标签读取总结
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
香港服务器如何优化才能显著提升网站加载速度?
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
网易LOFTER官网链接 老福特网页版登录地址
高端智能建站公司优选:品牌定制与SEO优化一站式服务
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何将凡科建站内容保存为本地文件?
PythonWeb开发入门教程_Flask快速构建Web应用
如何在 React 中条件性地遍历数组并渲染元素
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
微信h5制作网站有哪些,免费微信H5页面制作工具?
如何实现javascript表单验证_正则表达式有哪些实用技巧
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
用v-html解决Vue.js渲染中html标签不被解析的问题
非常酷的网站设计制作软件,酷培ai教育官方网站?
网页设计与网站制作内容,怎样注册网站?
中山网站推广排名,中山信息港登录入口?
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
如何快速搭建支持数据库操作的智能建站平台?
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
利用JavaScript实现拖拽改变元素大小
千库网官网入口推荐 千库网设计创意平台入口
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Linux系统命令中tree命令详解
如何安全更换建站之星模板并保留数据?
Laravel怎么在Controller之外的地方验证数据

