• 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   | AppHttpControllersIndexController@index   | web          | #展示页面
    
    | POST      | Admin              | Admin.store   | AppHttpControllersIndexController@store   | web          | #添加操作
    
    | GET|HEAD  | Admin/create       | Admin.create  | AppHttpControllersIndexController@create  | web          | #添加页面
    
    | DELETE    | Admin/{Admin}      | Admin.destroy | AppHttpControllersIndexController@destroy | web          | #删除操作
    
    | PUT|PATCH | Admin/{Admin}      | Admin.update  | 
    AppHttpControllersIndexController@update  | web          | #更新操作
    
    | GET|HEAD  | Admin/{Admin}      | Admin.show    | AppHttpControllersIndexController@show    | web          |
    
    | GET|HEAD  | Admin/{Admin}/edit | Admin.edit    | AppHttpControllersIndexController@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 AppHttpControllersAdmin;
    18 
    19     use IlluminateHttpRequest;
    20 
    21     use DB;
    22 
    23     use AppHttpControllersController;
    24 
    25     class UserController extends Controller
    26     {
    27         //index 方法
    28 
    29         public function index(){
    30             
    31             echo "我是后台控制器User";
    32         }
    33         
    34     }

    二、内容在总结中

     
  • 相关阅读:
    vscode的插件收集
    关于vue移动端的适配
    Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null objec
    android studio 使用 aidl(三)权限验证
    Android权限级别(protectionLevel)
    android studio 使用 aidl(二)异步回调
    android studio 使用 aidl(一)基础用法
    如何获取Android唯一标识(唯一序列号)
    android studio 生成aar和引用aar
    android studio 编译NDK android studio 生成.so文件
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/10823012.html
Copyright © 2020-2023  润新知