(慕课网_轻松学会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. [React] React Router: Named Components

    In this lesson we'll learn how to render multiple component children from a single route. Define a n ...

  2. mysql安装出现error Nr.1045

    我们在windows下安装mysql时会出现Access denied for user 'root'@localhost'(using password:No)的问题,这个问题是因为你的机器上之前安 ...

  3. [iOS]使用symbolicatecrash分析crash文件

    对于我们iOS开发者来说,最心碎的事莫过于苹果审核一个星期后上架app store,而第二天就报出闪退bug.一周前我刚经历过,而且最坑的是由于第一次做个人开发,经验不足,没有集成友盟的分析SDK,还 ...

  4. DataGrid( 数据表格) 组件[9]

    本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...

  5. 使用SQL语句创建和删除约束

    原文:http://blog.csdn.net/hamber_bao/article/details/6504905 约束的目的就是确保表中的数据的完整性. 常用的约束类型如下: 主键约束:(Prim ...

  6. htm初学笔记

    一.什么是html HTML(HyperText Markup Language):超文本标记语言,一种纯文本类型的语言 --使用带有尖括号的“标记”将网页中的内容逐一标识出来 用来设计网页的标记语言 ...

  7. python 下的数据结构与算法---4:线形数据结构,栈,队列,双端队列,列表

    目录: 前言 1:栈 1.1:栈的实现 1.2:栈的应用: 1.2.1:检验数学表达式的括号匹配 1.2.2:将十进制数转化为任意进制 1.2.3:后置表达式的生成及其计算 2:队列 2.1:队列的实 ...

  8. C语言学习笔记---谭浩强

    前段时间有机会去面试了一次,真是备受“打击”(其实是启发),总的来说就是让我意识到了学习工具和学习技术的区别.所以最近在看一些数据结构和算法,操作系统,python中的并行编程与异步编程等东西.然而数 ...

  9. 常见Oracle数据库问题总结及解决办法(一)

    开发中常使用Oralce数据库,使用中也许会碰到形形色色的各类错误提示,如:ORA-00933:SQL命令未正确结束.ORA-009242等等,为此记录积累对于自己来说还是很有帮助的,今天就记录以前出 ...

  10. java正则

    package cn.stat.p4.ipdemo; import java.util.regex.Matcher; import java.util.regex.Pattern; public cl ...