(慕课网_轻松学会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的更多相关文章

  1. Laravel表单传值

    仔细阅读过Laravel官方文档的就不用看啦~ 整理下之前遇到的关于Laravel表单的一些小问题 表单传值无法传过去,因为laravel做了表单的防护 只需要将{{ csrf_field() }}放 ...

  2. Laravel表单验证提示设置多语言

    默认表单提示是英文的,我们可以安装语言包构建多语言环境. 根据版本选择命令 For Laravel 7.x : run composer require caouecs/laravel-lang:~6 ...

  3. 社群系统 ThinkSNS+ 中如何利用 Laravel 表单验证来验证用户名的?(我朝独有需求,两个字母占一个汉字。。。)

    ThinkSNS+后端框架使用laravel,每周和 laravel master 保持同步,而后台和 html 5 则采用 vue 开发.语言特性方面,采用 php 7 的严格模式. 言归正传,之所 ...

  4. laravel 表单验证 Exists 规则的基本使用方法

    public function rules(){ return [ 'm_pushing_frequency_level_id' => 'integer|required|exists:m_pu ...

  5. laravel 表单方法伪造

    有时候,我们可能需要手动定义发送表单数据所使用的 HTTP 请求方式,而 HTML 表单仅支持 GET 和 POST 两种方式,如果要使用其他的方式,则需要自己来定义实现. HTTP 请求方式概述 最 ...

  6. 表单向controller传值如果没填controller取到的是null

    jsp前端表单,向controller传数据,如果没有值,后台传入的是null,比如checkbox未选中,后台设置的Integer[] ids,接收到的ids=null,hidden标签如果没有值, ...

  7. 处理laravel表单提交默认将空值转为null的问题

    比如表单提交,如果我们提交了这个字段,但是这个字段为空字符串.在Laravel中会自动转义成Null. 处理这个问题,直到找到中间件\vendor\laravel\framework\src\Illu ...

  8. laravel表单验证

    效果展示:         代码 实现: 后台: use Validator; public function login() { if($input = Input::all()){ //验证提交的 ...

  9. laravel表单操作

    $request->all()//获取所有参数if($request->isMethod('GET')){判断是否是GET请求}$res = $request->is('studen ...

随机推荐

  1. 关于MSHTML

    本文翻译自http://msdn.microsoft.com/workshop/browser/mshtml/overview/overview.aspMSDN Home >  MSDN Lib ...

  2. Mina入门实例

    继续上一篇,这篇主要讲通过mina往B端发送消息.并接受消息,mina是一个网络通信框架,封装了javaNIO.简单易用.网上有非常多关于他的介绍,在此不赘述了. 如上篇所介绍,完毕功能,须要五个类: ...

  3. Codeforces Round #274 (Div. 2) E. Riding in a Lift(DP)

    Imagine that you are in a building that has exactly n floors. You can move between the floors in a l ...

  4. 10个热门IT证书

    MCP (微软专家认证) CCNA (思科认证网络支持工程师) MCPD (微软认证开发专家) SCJP (SUN认证Java程序员) CISSP (信息系统安全认证专家) CompTIA A+认证 ...

  5. 解决Android SDK Manager下载太慢问题(转)

    1.打开android sdk manager 2.打开tool->options,如图所示 3.将Proxy Settings 里的HTTP Proxy Server和HTTP Proxy P ...

  6. angular 指令 要点解析

    指令可以删繁就简前端的js代码,杜绝重复的js代码和html代码. 下面就对指令的重要属性进行罗列 一.restrict  =  'AECM'  分别指该指令标识位于 attribute属性: < ...

  7. ORA-01172 ORA-01151

    今天发现服务器的9号硬盘坏了,因做了RAID5,报障后也没理会,过了一会儿,有人反应说报表运行不出来,发现服务器所有的硬盘都不工作了,界面也没有反应,就强行关机,再开机可以进入系统,等维修人员来换了新 ...

  8. ionic开发android app步骤

    一.android开发 1. 首先要安装node环境,Ionic的安装和后续的许多前端工具的安装都依赖于node的包管理器npm. nodeJs环境的安装很简单,去官网下载最新版的NodeJs直接安装 ...

  9. cas+tomcat+shiro实现单点登录-4-Apache Shiro 集成Cas作为cas client端实现

    目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...

  10. uva 296 - Safebreaker

    枚举法 #include <cstdio> using namespace std; int main() { int t, n, i, j, k; scanf("%d" ...