laravel基础课程---3、路由(Laravel中的常见路由有哪几种)
laravel基础课程---3、路由(Laravel中的常见路由有哪几种)
打赏
一、总结
一句话总结:
6种:post,get,put,patch,delete,options
Route::get($uri, $callback); Route::post($uri, $callback); Route::put($uri, $callback); Route::patch($uri, $callback); Route::delete($uri, $callback); Route::options($uri, $callback);
1、Lararel的CSRF 保护 保护表单安全措施是怎么回事?
作用:Laravel 提供简单的方法保护你的应用不受到 跨站请求伪造 (CSRF) 攻击。跨站请求伪造是一种恶意的攻击,它利用已通过身份验证的用户身份来运行未经授权的命令。
实现:表单中添加如下这句好:{{csrf_field()}}。详见代码
实质:就是在form表单中添加了一个token值; input type="hidden" name="_token" value="SqlDhf...一串随机字符串"
原理是:检验表单的token值是否合法,合法就通过,否则就不通过
1 <form method="POST" action="/profile"> 2 {{ csrf_field() }} 3 ... 4 </form>
2、路由中的post请求方式如何书写?
就是post方法:Route::post('check',"LoginController@check");
3、路由中的put请求如何实现?
路由写法:Route的put方法:Route::put('put','LoginController@put');
控制器写法:就是基础控制器的写法
请求页面设置请求类型为put:input type="hidden" name="_method" value="put"
路由中书写
1 // put请求 2 3 Route::get('putWeb','LoginController@putWeb'); 4 5 // put的处理页面 6 Route::put('put','LoginController@put');
控制器书写
1 // put请求页面 2 3 public function putWeb(){ 4 5 return view('putWeb'); 6 } 7 8 // put请求处理页面 9 public function put(Request $request){ 10 dd($request->input()); 11 }
请求页面书写
1 <form action="put" method="post"> 2 <p> 3 {{csrf_field()}} 4 5 <input type="hidden" name="_method" value="put"> 6 User: 7 <input type="text" name="user" id=""> 8 </p> 9 </form>
4、Laravel页面中如何一个页面实现多种请求方式(我又可以get方式给页面数据,用户又可以搜索框来post请求)?
match(指定请求):Route::match(['get','post'],'/',"IndexController@index");
控制器代码:判断用户是否为post请求,如果是就输出用户搜索的,否则输出 正常显示到页面的数据
any(全部请求):Route::any('/',"IndexController@index");
5、Laravel资源路由的使用实例及实现(实际项目用的比较多)?
实例:后台拥有很多模块,用户模块、管理模块等(增、删、改、查):这样直接在路由中写非常多非常麻烦
1 Route::get('user/index','UserController@index'); 2 Route::get('user/add','UserController@add'); 3 Route::get('user/edit','UserController@edit'); 4 Route::post('user/insert','UserController@insert'); 5 Route::post('user/update','UserController@update'); 6 Route::get('user/del','UserController@del');
实现:resource方法:Route::resource('Admin','IndexController');
| GET|HEAD | Admin | Admin.index | App\Http\Controllers\IndexController@index | web | #展示页面 | POST | Admin | Admin.store | App\Http\Controllers\IndexController@store | web | #添加操作 | GET|HEAD | Admin/create | Admin.create | App\Http\Controllers\IndexController@create | web | #添加页面 | DELETE | Admin/{Admin} | Admin.destroy | App\Http\Controllers\IndexController@destroy | web | #删除操作 | PUT|PATCH | Admin/{Admin} | Admin.update | App\Http\Controllers\IndexController@update | web | #更新操作 | GET|HEAD | Admin/{Admin} | Admin.show | App\Http\Controllers\IndexController@show | web | | GET|HEAD | Admin/{Admin}/edit | Admin.edit | App\Http\Controllers\IndexController@edit | web | #修改页面 | GET|HEAD | api/user | | Closure | api,auth:api |
6、路由如何带参数和多个参数?
大括号里参数:Route::get('user/del/{id}',function($id){ echo $id; });
多个参数:Route::get('UserInfo/{name}/{sex}',function($name,$sex){ echo $name; echo $sex; });
可能带或不可能带的参数:问号+默认值:Route::get('user/edit/{id?}',function($id="默认值"){ echo $id; });:带默认值保证不带参数的时候有值
7、控制器中如何访问路由中所带的参数?
直接传入参数,$_GET里面没有值
Route::get('UserInfo/{name}/{sex}',"IndexController@UserInfo"); // 新建UserInfo public function UserInfo($a,$sex1){ var_dump($a); var_dump($sex1); }
8、命名路由是什么以及作用?
是什么:就是给路由命名
实现:Route::get('abc',"IndexController@abc")->name('one');
作用:获取别名的url地址:控制器中:route('one');可以到以one为别名的控制器中
作用:通过命名路由实现重定向(实现重定向的一种方式):控制器中:return redirect()->route('one');
9、路由组命名空间的作用以及实现?
实现前后台控制器分离:需要在控制器目录下新建Admin目录和Home目录 在目录中新建控制器
在Route的group方法中指定命名空间:Route::group(['namespace'=>'Admin'],function(){
在Admin中的控制器要写好命名空间,并且继承控制器要use到控制器
1 //路由中代码 2 Route::group(['namespace'=>'Admin'],function(){ 3 Route::get('admin','IndexController@index'); 4 Route::get('admin/user','UserController@index'); 5 Route::get('admin/goods','GoodsController@index'); 6 }); 7 8 Route::group(['namespace'=>'Home'],function(){ 9 Route::get('/','IndexController@index'); 10 }); 11 #需要在控制器目录下新建Admin目录和Home目录 在目录中新建控制器 12 #注意 需要修改命名空间 13 14 控制器中代码 15 <?php 16 17 namespace App\Http\Controllers\Admin; 18 19 use Illuminate\Http\Request; 20 21 use DB; 22 23 use App\Http\Controllers\Controller; 24 25 class UserController extends Controller 26 { 27 //index 方法 28 29 public function index(){ 30 31 echo "我是后台控制器User"; 32 } 33 34 }
二、内容在总结中
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(三):用.NET IoT库
· 【非技术】说说2024年我都干了些啥
2018-05-06 课程与教学管理系统(CMS):Sakai
2018-05-06 学习活动管理系统:LAMS
2018-05-06 开源课程管理系统(CMS):Moodle
2018-05-06 js遍历对象的属性和方法
2018-05-06 javascript进阶教程第二章对象案例实战
2018-05-06 php数组函数(分类基本数组函数,栈函数,队列)
2018-05-06 thinkphp动态注册路由