一 request
Illuminate\Http\Request
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MemberController extends Controller{
public function info(Request $request){ // 依赖注入
echo $request->input('name'); //取值
echo $request->input('name','10'); //设置默认值
print_r($request->all()); //获取所有请求参数
print_r($request->only(['name'])); //提取部分参数
print_r($request->except(['username'])); //剔除不需要的参数
print_r($request->header()); //获取请求头信息
echo $request->has('name'); //判断是否有这个参数 有返回true ,没有返回false
echo $request->path(); //获取请求的路径
echo $request->url(); //获取完整的url
echo $request->ip(); //获取请求的ip
echo $request->getPort(); //获取端口
echo $request->method(); //请求方法
echo $request->isMethod('get'); //判断请求方法
echo $request->ajax(); //判断是否是ajax请求
echo $request->is('member/info'); //判断是否是对应的控制器/方法
}
}
二 session
1 配置 config/session.php
2 使用
laravel里使用session有三种方法
(1) HTTP request类里的session方法
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class MemberController extends Controller{
public function info(Request $request){
$request->session()->put('key1', 'value1'); // 设置
echo $request->session()->get('key1'); // 取值
}
}
设置session
$request->session()->put('key1', 'value1'); // 设置一个
$request->session()->put(['key1'=> 'value1','key2'=>'value2']); //设置多个
以数组方式存储session
$request->session()->push('key1', 'value1');
$request->session()->push('key1', 'value2');
取出session
echo $request->session()->get('key1'); // 取出一个
print_r($request->session()->all()); // 取出所有
取出后删除session
echo $request->session()->pull('key1');
判断是否存在
echo $request->session()->has('key');
删除 session
$request->session()->forget('key');
清空(删除所有)
$request->session()->flush()
暂存(只能访问1次)
$request->session()->flash('key','value');
PS:pull和flash的区别
pull 取出后删除,程序后的取不到值
flash 第一次取出flash暂存的值时,只要不刷新,后面的程序还可以操作这个值
(2) session辅助函数
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MemberController extends Controller{
public function info(){
session()->put('key2', 'value2');
echo session()->get('key2');
}
}
操作 参照第一种
(3) session facade(使用Session类)
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Session; // 使用Session类
class MemberController extends Controller{
public function info(){
Session::put('key3', 'value3');
echo Session::get('key3');
}
}
操作 参照第一种
三 response
常见的响应类型 :字符串,视图,json,重定向。
1 返回 json数据
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class MemberController extends Controller{
public function info(){
$data = [
'code'=>1,
'msg'=>'提示'
];
return response()->json($data); //返回json数据
}
}
2 重定向
return redirect('/')->with('key122','value122'); // 重定向根目录 参数填路由名
return redirect()->action('MemberController@name')->with('key122','value122'); // 这个控制器/方法 必须先绑定路由
return redirect()->route('m')->with('key122','value122'); // 参数是要跳转的路由别名
return redirect()->back(); // 返回上一级地址
return redirect()->away('http://laravelacademy.org'); //重定向到外部域名
//with后面是闪存的session数据 ,只能获取一次,刷新后消失
四 middleware
1 创建中间件(App\Http\Middleware 目录下)
<?php
namespace App\Http\Middleware;
use Closure;
class Activety{
public function handle($request,Closure $next){
if(time()<strtotime('2019-03-03')){
return redirect('activety0');
}
return $next($request);
}
}
2 注册中间件
protected $routeMiddleware = [
'activety' => \App\Http\Middleware\Activety::class,
];
3 使用中间件
Route::group(['middleware'=>['activety']],function(){
Route::get('activety1',['uses'=>'MemberController@activety1']);
Route::get('activety2',['uses'=>'MemberController@activety2']);
});
PS:中间件的作用,当访问路由中注册过的中间件的地址时,先进入中间件进行过滤