一、Controller 介绍
1.Controller之Request
● laravel中的请求使用的是sympony/http-foundation组件
获取请求中的值
判断请求类型
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class StudentController extends Controller{
public function request1(Request $request) {
//echo $request->input('name');输出name的值
//$request->input 接受指定参数(name) 如果不存在返回null
// echo $request->input('name', 'null');
// $request->has 判断指定参数是否存在 存在返回true 不存在返回false
// if($request->has('name')) {
// echo $request->input('name');
// }else{
// echo 'name参数为空';
// }
// $request->all 返回所有的参数(array类型)
// $res = $request->all();
// dd($res);
// $request->method 返回访问类型
// echo $request->method();
// $request->isMethod 判断是否为指定请求类型(不区分大小写) 是为true 否则为false
// if($request->isMethod('GET')) {
// echo 'yes';
// }else{
// echo 'no';
// }
// $request->ajax 判断是否为ajax请求 是为true 否则为false
// $res = $request->ajax();
// var_dump($res);
// $request->is 判断是否为指定路由
// $res = $request->is('User/*');
// var_dump($res);
// $request->url 获取当前的url
$res = $request->url();
echo $res;
}
}
?>
2.Controller之Session
● 由于HTTP协定是无状态(Stateless)的,所以session提供一种保存用户数据的方法。
● laravel支持了多种session后驱驱动,并提供清楚、统一的API。也内置支持如Memcached、Redis和数据库的后端驱动。默认使用“file”的Session驱动。
● session的配置文件配置在config/session中。
session操作的三种方式:
● $request->session()->方法 HTTP request类的session()方法
● session()->方法 session()辅助函数
● Session::方法 Session facade,Session::put('key','value);方法需要添加use Illuminate\Support\Facades\Session;
// 以数组的形式存储数据
// Session::put(['name'=>'liuzhe', 'age'=>'21', 'sex'=>'m']);
// 把数据放到Session的数组中
// Session::push('name2', 'aaa');
// Session::push('name2', 'bbb');
// 取出相关session数据并删除
// $res = Session::pull('sex', 'default');
// 取出session中所有数据
// $res = Session::all();
// 判断session中是否存在某个值
// $res = Session::has('age')?'存在':'不存在';
// 删除session中指定的值
// Session::forget('name');
// 清空session
// Session::flush();
// 暂存数据session(访问一次后就自删)
// Session::flash('temp', 'test.');
3.Controller之Response
响应的常见类型:
● 字符串:直接return
● 视图:return view();
● JSON:return response()->json()
● 重定向:return redirect()->with()带数据跳转
return redirect()->action()->with()带数据跳转至某控制方法
return redirect()->route(路由别名)->with()带数据跳转至某路由
return redirect()->back()->with() 带数据跳转至上一个页面
public function response1() {
$arr = [
'errCode' => 0,
'status' => 'success',
'data' => 'test'
];
// 将数组转化为json格式
// return response()->json($arr);
// 方法1: redirect('待重定向的url')
// return redirect('session1');
// 方法2: (跳转前添加一条一次性的session数据)
// return redirect('session1')->with('msge', '我是一条快闪数据');
// 方法3:
// return redirect()->action('StudentController@session1')->with('msge', '我是一条快闪数据');
// 方法4: (路由别名的方式重定向)
// return redirect()->route('s');
// 方法5: (返回上一页重定向)
return redirect() -> back();
}
4.Controller之Middleware
● 中间件有什么作用?Laravel 中间件提供一个方便的机制来过滤进入应用程序的HTTP请求。
中间件操作:
● 新建中间件:手写,或artisan命令创建
● 注册中间件:在Kernel.php $routeMiddleware属性中加入中间件
● 使用中间件:路由中加入路由组
● 前置和后置操作:将$response=$next($request)置前或置后,$next是下一个操作闭包,$request是请求
Controller之Middleware (中间件)
StudentController.php中的成员方法
public function huodong0() {
return '这是一个宣传页面';
}
public function huodong1() {
return '活动开始了';
}
public function huodong2() {
return '活动结束了';
}
// 中间件 - 编写 [ app/Http/Middleware/hudong.php ]
<?php
namespace App\Http\Middleware;
use Closure;
class huodong {
public function handle($request, Closure $next) {
if(time() < strtotime('2017-01-05')){
return redirect('huodong0');
}
$next($request);
// 后置操作
// echo $next($request);
}
}
?>
// 中间件 - 注册 [ app/Http/kernel.php ]
protected $routeMiddleware = [
'huodong' => \App\Http\Middleware\huodong::class
];
// 中间件 - 使用 [ app/Http/routes.php ]
Route::get('huodong0', 'StudentController@huodong0');
Route::group(['middleware' => 'huodong'], function() {
Route::get('huodong1', 'StudentController@huodong1');
Route::get('huodong2', 'StudentController@huodong2');
});
二、Laravel表单