• Laravel-表单篇-controller


    (慕课网_轻松学会Laravel-表单篇_天秤vs永恒老师_http://www.imooc.com/learn/699)

    Controller

      1、Controller-Request   

     1 //Request
     2     public function request1(Request $request){
     3         //1、取值
     4         // return $request->input('name','未知');
     5         //判断有没有sex
     6         if($request->has('sex')){
     7             echo $request->input('sex');
     8         }else{
     9             echo '无参数';
    10         }
    11         //获取所有的参数  dd打印,会结束掉脚本
    12         $res = $request->all();
    13         var_dump($res);
    14 
    15         //判断请求类型
    16         echo $request->method();
    17         var_dump($request->isMethod('GET'));
    18         var_dump($request->ajax());
    19         //判断路由
    20         var_dump($request->is('people/student/*'));
    21         echo '<br>';
    22         //获取当前的url
    23         echo $request->url();
    24     }

      2、Controller-session

        默认使用file驱动,可以在配置文件中修改 Laravel中使用session有三种方式

        1)、HTTP request类中的session()方法

        2)、session()辅助函数

        3)、Session facade

        代码示例:

        路由

    1    Route::group(['middleware' => ['web']], function(){
    2         Route::get('student/setSession','PeopleStudentController@setSession');
    3         Route::get('student/getSession','PeopleStudentController@getSession');
    4         Route::get('student/deleteSession','PeopleStudentController@deleteSession');
    5     }); 
    use SymfonyComponentHttpFoundationRequest;
    use IlluminateSupportFacadesSession;
     1 //设置session
     2     public function setSession(Request $request){
     3         //1 HTTP request
     4         $request->session()->put('key1','value1');
     5 
     6         // 2 session()
     7         session()->put('key2','value2');
     8 
     9         //3 Session类
    10         Session::put('key3','value3');
    11 
    12         Session::put(['key5'=>'value5','key6'=>'value6']);
    13         //把数据放在数组中
    14         Session::push('student','helloJiu');
    15         Session::push('student','sss');
    16 
    17         //存入session,获取一次就消失;
    18         Session::flash('key-flash','value-flash');
    19     }
    20     //获取session
    21     public function getSession(Request $request){
    22         //1 HTTP request
    23         echo $request->session()->get('key1');
    24 
    25         // 2 session()
    26         echo session()->get('key2');
    27 
    28         //3 Session类
    29         echo Session::get('key3','default');
    30         //不存在,使用默认值 
    31         echo Session::get('key4','default');
    32         echo Session::get('key6');
    33 
    34         var_dump(Session::get('student','default'));
    35         //从session拿出数据就删除
    36         var_dump(Session::pull('student'));
    37 
    38         //取出session所有的值
    39         echo '<pre>';
    40         var_dump(Session::all());
    41 
    42         //判断session中某个key是否存在
    43         var_dump(Session::has('key1'));    
    44         //第一次访问时存在,下次消失
    45         echo Session::get('key-flash');    
    46 
    47     }
    48 
    49     //输出session中的值
    50     public function deleteSession(){
    51         //在session中删除key1和其对应的值
    52         Session::forget('key1');
    53 
    54         //删除所有的session
    55         Session::flush();
    56     }

      3 Controller-Response

      响应的常见类型:字符串,视图,Json,重定向

      

     1 public function response(){
     2 
     3         $data = [
     4             'errCode' => 0,
     5             'errMsg' => 'success',
     6             'data' => 'helloJiu',
     7         ];
     8         //响应一个json数据
     9         return response()->json($data);
    10         
    11         //重定向,with原理是存入session,获取一次就删除
    12         return redirect('people/student/getSession')->with('message','hellojiu');
    13         return redirect()->action('PeopleStudentController@getSession')->with('message','helloJiu');
    14         return redirect()->route('people/student/setSession');
    15         return redirect()->back();//返回上一个页面
    16     }

      4 Controller之Middleware

       Laravel中间件提供了一个方便的机制来过滤进入应用程序的HTTP请求

       如:有一个活动,在指定日期后开始,如果活动没有开始,只能访问宣传页面

        新建中间件、注册中间件、使用中间件、中间件的前置和后置操作

       控制器中有三个方法,activity1(为注册中间件)activity2activity3都注册了,代码如下

        1)控制器   

     1 //对应活动的宣传页面
     2     public function activity1(){
     3         return '活动快要开始了';
     4     }
     5 
     6     public function activity2(){
     7         return '活动进行中';
     8     }
     9     public function activity3(){
    10         return '活动完成,谢谢参与';
    11     }

      2)、路由系统  

    1     //宣传页面
    2     Route::any('student/activity1','PeopleStudentController@activity1');
    3     //活动页面,需要经过中间件验证
    4     Route::group(['middleware' => ['activity']], function(){
    5 
    6         Route::any('student/activity2','PeopleStudentController@activity2');
    7         Route::any('student/activity3','PeopleStudentController@activity3');
    8     });

      3)、HttpMiddlewareActivity.php中间件代码

     1 <?php
     2 namespace AppHttpMiddleware;
     3 use Closure;
     4 
     5 class Activity{
     6 
     7     //前置操作
     8     public function handle($request, Closure $next){
     9 
    10         if(time() < strtotime('2016-12-3')){
    11             return redirect('people/student/activity1');
    12         }
    13         //访问当前页面
    14         return $next($request);
    15     }
    16 
    17     //后置操作
    18     // public function handle($request, Closure $next){
    19 
    20     //     $response = $next($request);
    21 
    22     //     //逻辑在请求后面执行
    23     //     echo '我是后置';
    24     // }
    25 }

      4)、AppHttpKernel.php进行中间件注册  

    1 protected $routeMiddleware = [
    2         'auth' => AppHttpMiddlewareAuthenticate::class,
    3         'auth.basic' => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
    4         'guest' => AppHttpMiddlewareRedirectIfAuthenticated::class,
    5         'throttle' => IlluminateRoutingMiddlewareThrottleRequests::class,
    6         'activity' => AppHttpMiddlewareActivity::class,
    7     ];

       当请求activity2时,路由系统发现有中间件,就会通过Kerne找到Activity,调用其handle()方法,进行判断

      

        

      

  • 相关阅读:
    Apache Hadoop 3.0.0 Release Notes
    控制你的数据,你才能得到有效且高效的数据结果
    读写分离与主从同步数据一致性
    代理ip proxy
    maximize_window fullscreen_window minimize_window
    HTTP 代理原理及实现
    browser user agent
    res_d_l =[{'contents':d.contents,'href':d.attrs['href']} for d in rd] 泛型
    tmp
    Connection reset by peer
  • 原文地址:https://www.cnblogs.com/helloJiu/p/6193891.html
Copyright © 2020-2023  润新知