Laravel-表单篇-controller
(慕课网_轻松学会Laravel-表单篇_天秤vs永恒老师_http://www.imooc.com/learn/699)
Controller
1、Controller-Request
//Request
public function request1(Request $request){
//1、取值
// return $request->input('name','未知');
//判断有没有sex
if($request->has('sex')){
echo $request->input('sex');
}else{
echo '无参数';
}
//获取所有的参数 dd打印,会结束掉脚本
$res = $request->all();
var_dump($res); //判断请求类型
echo $request->method();
var_dump($request->isMethod('GET'));
var_dump($request->ajax());
//判断路由
var_dump($request->is('people/student/*'));
echo '<br>';
//获取当前的url
echo $request->url();
}
2、Controller-session
默认使用file驱动,可以在配置文件中修改 Laravel中使用session有三种方式
1)、HTTP request类中的session()方法
2)、session()辅助函数
3)、Session facade
代码示例:
路由
Route::group(['middleware' => ['web']], function(){
Route::get('student/setSession','People\StudentController@setSession');
Route::get('student/getSession','People\StudentController@getSession');
Route::get('student/deleteSession','People\StudentController@deleteSession');
});
use Symfony\Component\HttpFoundation\Request;
use Illuminate\Support\Facades\Session;
//设置session
public function setSession(Request $request){
//1 HTTP request
$request->session()->put('key1','value1'); // 2 session()
session()->put('key2','value2'); //3 Session类
Session::put('key3','value3'); Session::put(['key5'=>'value5','key6'=>'value6']);
//把数据放在数组中
Session::push('student','helloJiu');
Session::push('student','sss'); //存入session,获取一次就消失;
Session::flash('key-flash','value-flash');
}
//获取session
public function getSession(Request $request){
//1 HTTP request
echo $request->session()->get('key1'); // 2 session()
echo session()->get('key2'); //3 Session类
echo Session::get('key3','default');
//不存在,使用默认值
echo Session::get('key4','default');
echo Session::get('key6'); var_dump(Session::get('student','default'));
//从session拿出数据就删除
var_dump(Session::pull('student')); //取出session所有的值
echo '<pre>';
var_dump(Session::all()); //判断session中某个key是否存在
var_dump(Session::has('key1'));
//第一次访问时存在,下次消失
echo Session::get('key-flash'); } //输出session中的值
public function deleteSession(){
//在session中删除key1和其对应的值
Session::forget('key1'); //删除所有的session
Session::flush();
}
3 Controller-Response
响应的常见类型:字符串,视图,Json,重定向
public function response(){
$data = [
'errCode' => 0,
'errMsg' => 'success',
'data' => 'helloJiu',
];
//响应一个json数据
return response()->json($data);
//重定向,with原理是存入session,获取一次就删除
return redirect('people/student/getSession')->with('message','hellojiu');
return redirect()->action('People\StudentController@getSession')->with('message','helloJiu');
return redirect()->route('people/student/setSession');
return redirect()->back();//返回上一个页面
}
4 Controller之Middleware
Laravel中间件提供了一个方便的机制来过滤进入应用程序的HTTP请求
如:有一个活动,在指定日期后开始,如果活动没有开始,只能访问宣传页面
新建中间件、注册中间件、使用中间件、中间件的前置和后置操作
控制器中有三个方法,activity1(为注册中间件)activity2\activity3都注册了,代码如下
1)控制器
//对应活动的宣传页面
public function activity1(){
return '活动快要开始了';
} public function activity2(){
return '活动进行中';
}
public function activity3(){
return '活动完成,谢谢参与';
}
2)、路由系统
//宣传页面
Route::any('student/activity1','People\StudentController@activity1');
//活动页面,需要经过中间件验证
Route::group(['middleware' => ['activity']], function(){ Route::any('student/activity2','People\StudentController@activity2');
Route::any('student/activity3','People\StudentController@activity3');
});
3)、Http\Middleware\Activity.php中间件代码
<?php
namespace App\Http\Middleware;
use Closure; class Activity{ //前置操作
public function handle($request, Closure $next){ if(time() < strtotime('2016-12-3')){
return redirect('people/student/activity1');
}
//访问当前页面
return $next($request);
} //后置操作
// public function handle($request, Closure $next){ // $response = $next($request); // //逻辑在请求后面执行
// echo '我是后置';
// }
}
4)、App\Http\Kernel.php进行中间件注册
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'activity' => \App\Http\Middleware\Activity::class,
];
当请求activity2时,路由系统发现有中间件,就会通过Kerne找到Activity,调用其handle()方法,进行判断
Laravel-表单篇-controller的更多相关文章
- Laravel表单传值
仔细阅读过Laravel官方文档的就不用看啦~ 整理下之前遇到的关于Laravel表单的一些小问题 表单传值无法传过去,因为laravel做了表单的防护 只需要将{{ csrf_field() }}放 ...
- Laravel表单验证提示设置多语言
默认表单提示是英文的,我们可以安装语言包构建多语言环境. 根据版本选择命令 For Laravel 7.x : run composer require caouecs/laravel-lang:~6 ...
- 社群系统 ThinkSNS+ 中如何利用 Laravel 表单验证来验证用户名的?(我朝独有需求,两个字母占一个汉字。。。)
ThinkSNS+后端框架使用laravel,每周和 laravel master 保持同步,而后台和 html 5 则采用 vue 开发.语言特性方面,采用 php 7 的严格模式. 言归正传,之所 ...
- laravel 表单验证 Exists 规则的基本使用方法
public function rules(){ return [ 'm_pushing_frequency_level_id' => 'integer|required|exists:m_pu ...
- laravel 表单方法伪造
有时候,我们可能需要手动定义发送表单数据所使用的 HTTP 请求方式,而 HTML 表单仅支持 GET 和 POST 两种方式,如果要使用其他的方式,则需要自己来定义实现. HTTP 请求方式概述 最 ...
- 表单向controller传值如果没填controller取到的是null
jsp前端表单,向controller传数据,如果没有值,后台传入的是null,比如checkbox未选中,后台设置的Integer[] ids,接收到的ids=null,hidden标签如果没有值, ...
- 处理laravel表单提交默认将空值转为null的问题
比如表单提交,如果我们提交了这个字段,但是这个字段为空字符串.在Laravel中会自动转义成Null. 处理这个问题,直到找到中间件\vendor\laravel\framework\src\Illu ...
- laravel表单验证
效果展示: 代码 实现: 后台: use Validator; public function login() { if($input = Input::all()){ //验证提交的 ...
- laravel表单操作
$request->all()//获取所有参数if($request->isMethod('GET')){判断是否是GET请求}$res = $request->is('studen ...
随机推荐
- H面试程序(10): 字符串包含问题
题目描述:判断第二个字符串中的元素是否都能在第一个字符串中找到: 注意:和字符串的字串的问题有所区别,如第一个字符串为 abcdefg,第二个字符串为 aaabc,第二个字串还是包含于第一个字符串 ...
- 路由器WAN口和LAN口详解
前一阵子做路由器的联网,由于利用了Openwrt操作系统,做起来虽然方便,但是很多原理细节都被忽略了.所以这里再来老生常谈一下wan口和lan口的区别,以及他们之间的工作原理. 首先百度一下,基本知识 ...
- 在VM中安装Android4.4连接小米手环 之 在VM中安装Android4.4
今天刚买了个小米手环,系统须要4.4及以上,但自己手机系统版本号不匹配.故打算在VM中安装Android4.4连接小米手环. 这一节先介绍在VM中安装Android4.4(怎么安装VM就不介绍了) 1 ...
- Android摇一摇振动效果Demo
前言 在微信刚流行的时候,在摇一摇还能用来那啥的时候,我也曾深更半夜的拿着手机晃一晃.当时想的最多的就是.我靠,为神马摇一下须要用这么大的力度,当时我想可能腾讯认为那是个人性的设计.后来才发觉 ...
- Gcc简介与常用命令
一.对于GUN编译器来说,程序的编译要经历预处理.编译.汇编.连接四个阶段,如下图所示: 在预处理阶段,输入的是C语言的源文件,通常为*.c.它们通常带有.h之类头文件的包含文件.这个阶段主要处理源文 ...
- Foreach语法
先看例子: Random rand = new Random(47); float f[] = new float[10]; for(int i = 0; i < 10; i++){ f[i] ...
- python 元类与定制元类
1:元类 元类:类的创建与管理者 所有类的元类是type class a: pass print(type(a)) 结果:<class 'type'> 2:定制元类 类的实例化过程:(可看 ...
- Resharper
http://baike.baidu.com/link?url=H8DVtrvKV1Cg-Hrz82C6ZiJOUXbi_3BfoROe-RlHhctPna4-BFfglPh2OsR-KmCqRZ7_ ...
- Dom4j之xPath
XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历. XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 XPointe ...
- spring 学习 AOP和IOC
自11开始接触三大框架,至今已俞5载, 当时风光无限的ssh,现在还在被广泛使用,并有扩大之势的只有spring了 spring主要特性,是广为使用的AOP(面向切面)和IOC(控制反转) 1.其中, ...