[Laravel] 05 - Controller

大纲


PHP章节貌似有类似功能,回头看下。 

 

 

请求 URL


一、URL 处理方法

请求使用的是:symfony/http-foundation组件

$_GET, $_POST, $_COOKIE, $_FILES, $_SERVER

 

[1] 在URL中,获取请求值

public function request1(Request $request)
{
  # (1) url中参数获取   
$request ->input('name');   $request ->input('sex', '未知');
  # (2) 判断有没有这个参数   
if ($ request->has('name')) {     echo $request->input('name');   } else {     echo '无该参数';   }
  # (3) 获取所有参数   
$res = $request->all();   dd($res); }

 

[2] 在URL中,判断请求的类型 

输入URL ----> 导向request1() ----> 判断自身的路由是否对
Route::any('student/request1', [uses' => 'StudentController@request1']);
------------------------------------------------------------------------

public function request1(Request $request)
{
  # (1) 是post? get?   
echo $request->method();   if ($request->isMethod('GET')) {     echo 'Yes';   } else {     echo 'No';   }   # (2) 发送的是否是ajax request   Res = $request->ajax();   var_dump($res);   # (3) 是否是student控制器下的某个方法   # 有这个路由么?     $request->is('student/*');   
  # (4) 获取当前URL
  $request->url();
}

 

 

 

Session 处理


一、纵览

原生:没有框架的写法见 - [PHP] 05 - Cookie & Session

配置:config文件夹中的 session.php

启动:app/Http文件夹的 Kernel.php

加载:加上上述的“中间件” - 'web

 

 

二、Session的参数操作

实践:发送给服务器一个session带有参数,并在第二次session请求中成功取回参数。

[写法一]

[写法二]
session()->put('key2', 'value2'); echo session()->get('key2'); [写法三] Session::put('key3', 'value3'); echo Session::get('key3');
echo Session::get('key4', 'default');  # 没有取到的话,就取到一个替代的默认值

[写法四]
Session::put(['key4'] => 'value4']);   # 以数组的形式存储数据
echo Session::get('key4', 'default');

 

放入多个,变为数组。

[写法五]
Session::push('student', 'sean');
Session::push('student', 'imooc')

# student里有了两个items,变为了数组
$res = Session::get('student', 'default');
var_dump($res);

 

取完就删除session中的数据。

[写法六]
Session::push('student', 'sean');
Session::push('student', 'imooc')

# 不是读,而是直接取走;取第二次就没值了
$res = Session::pull('student', 'default');
var_dump($res);

 

获取所有的数据。

[写法七]
$res = Session::all();
var_dump($res);

 

获取所有的数据。

[写法八]
if (Session::has('key')) {
  $res = Session:all();
  dd($res);
} else {   echo '你们老大不在‘;
}

 

删除数据。

[写法九]
# 1.删除指定的数据
Session::forget('key1');
$res = Session:all()
dd($res);

#2.清空session数据
Session::flush();

 

只有第一次存在,之后就没了。

[写法十]
Session::flash('key-flash', 'val-flash');
echo Session::get('key-flash');

 

 

 

响应处理


一、Response 响应

路由:

Route::any('response', [uses' => 'StudentController@response']);

响应:【以json的格式】

 

 

二、重定向

  • 不带参数
在response()中:

return redirect('session2');

类似于:goto 到了seesion2的“路由映射的函数”。

 

  • 带参数

[写法一]

在response()中:

return redirect('session2')->with('message', '我是快闪数据');

session2中提取参数;默认参数是:’暂无信息‘。

 

[写法二]
return
redirect()->action('StudentController@section2')->with('message', '我是快闪数据'); [写法三] return redirect()->route(<别名>)->with('message', '我是快闪数据');

 

  • 返回上一个页面
return redirect()->back(); 

 

 

 

中间件


一、大纲

 

 

 

二、定义中间件 

  • 路由
Route::any('activity0', [uses' => 'StudentController@activity0']);
Route::any('activity1', [uses' => 'StudentController@activity1']);
Route::any('activity2', [uses' => 'StudentController@activity2']);

 

  • 中间件

[1] 创建

[create app/Http/Middleware/Activity.php]

next 是个函数;Closure是一种类型;

【前置操作,因为在请求前设置的逻辑】

以下是后置操作的例子

 

[2] 注册

app/Http/Kernel.php

可见,中间件就是个“类”。

 

[3] 使用

活动页面需要中间件的验证,时间到了才能可用!没到,则跳转到宣传页面。

    

[4] 访问

public function activity0(){
  return '活动就要开始';
}

public function activity1()
{
  return '活动进行中';
}

public function activity2()
{
  return '活动进行中';
}

 

posted @ 2018-07-02 21:57  郝壹贰叁  阅读(196)  评论(0编辑  收藏  举报