php中Laravel控制器详解

2022-04-16 10:45:35 浏览数 (1)

1.Controller之Request

Laravel中的请求使用的是symfony/http-foundation组件,请求里面放了$_GET,$_POST,$_COOKIE,$_FILES,$_SERVER等数据。

在student控制器里新增一个方法test6。

代码语言:javascript复制
public function test6(Request $request){
echo $request->input("name");  //取值
//echo $request->input("name1","未知"); //当获取一个不存在的值时,可以设置默认的值
//if($request->has("name")) echo 1;   //判断是否有这个值
// dd($request->all());   //取得url里所有的值
//判断请求的类型

//echo $request->method();    //返回当前请求的类型

//if($request->isMethod("get")) echo 1;    //判断是不是get请求

//if(!$request->ajax())  echo 1;     //判断是不是ajax请求

//$res=$request->is("student/*") ;var_dump($res);   //判断路由是否符合某个格式

//echo $request->url();  //当前的url

}

并且导入命名空间:use IlluminateHttpRequest;

然后在URL访问laravel/public/test6?name=zls,发现输出zls

2.Controller之Session

由于http协议是无状态的,所以session提供一种保存用户数据的方法。Laravel支持多种session后端驱动,并提供了统一的清楚的api。也内置了memcached、redis、数据库的后端驱动。默认使用了file的文件后端驱动。Session的配置文件在config/session.php中。

Laravel中使用session有三种方式:

HTTP中Request类的session()方法、session()辅助函数、session facade。

新增一个test7方法,

代码语言:javascript复制
public function test7(Request $request){

/*Session*/

//1.HTTP Request session() 需要导入命名空间 use IlluminateHttpRequest;

      //session_start();

      //$request->session()->put("name","zls");  //设置

      // echo $request->session()->get("name");  //获取

    //2.session()辅助函数

     //session_start();

     //session()->put('name','zls');    //设置

    //echo session()->get('name');  //获取

    //3.Session 类  

  需要导入命名空间 use IlluminateSupportFacadesSession;

  //Session::put("name","zls");

  //echo  Session::get("name");

  //echo  Session::get("name1",'efd');  //不存在时设置默认值

 

  //Session::put(["name"=>"zls"]);  //以数组的形式存储数据

  //多个数据放到一个数组里,使用push方法

// session_start();

//Session::push('student','sean');

//Session::push('student','zls');

//var_dump(Session::get('student'));   //获取这个数组并打印

  //取出数据并且删除

        //session_start();

       //Session::put("name","zls");

       //echo Session::pull('name');   //取出数据并且删除

  //取出session中所有的值

           //session_start();

           //Session::push('student','sean');

   //Session::put("name","zls");

   //Session::put("agee","16");

   //var_dump(Session::all());    //取出session中所有的值

  //判断session存不存在

//if(Session::has('name') var_dump(Session::all());

  //删除某个key

//Session::forget('name');

  //删除所有session

//Session::flush();

  //闪存,第一次可以获取,第二次就没了

//Session::flush('name','zls');

//echo Session::get('name');

配置好路由:

Route::group(['middleware'=>['web']],function(){   //通过中间件的方式开启session_start(),php版本要大于5.6

Route::get('test7',['uses'=>'StudentController@test7']);

})

php版本小于5.6开启session_start()直接在控制器里写。

3.Controller之Response

响应的几种类型:字符串、视图、json、重定向

 //1.json

   $data=['name'=>'zls',"age"=>18,"sex"=>"man"];

   echo json_encode($data);

 //2.重定向

控制器里写:

     return redirect("test7"); //跳转到test7

     return redirect("test7")->with("message","我是快闪数据"); //跳转到test7控制器,并且携带数据

  test7控制器里用Session::get("message")来接收数据

  return redirect()->action("HomeController@index"); //跳转到其它控制器

  return redirect()->route("test"); //通过路由别名来跳转到任意位置,先要配置好路由

   return redirect()->back()   返回上一级目录

0 人点赞