大纲


PHP章节貌似有类似功能,回头看下。

请求 URL


一、URL 处理方法

请求使用的是:symfony/http-foundation组件

$_GET, $_POST, $_COOKIE, $_FILES, $_SERVER

[1] 在URL中,获取请求值

  1. public function request1(Request $request)
  2. {
      # (1) url中参数获取
  3.   $request ->input('name');
  4.   $request ->input('sex', '未知');
  5.   # (2) 判断有没有这个参数
  6.   if ($ request->has('name')) {
  7.     echo $request->input('name');
  8.   } else {
  9.     echo '无该参数';
  10.   }
  11.   # (3) 获取所有参数
  12.   $res = $request->all();
  13.   dd($res);
  14.  
  15. }

[2] 在URL中,判断请求的类型

  1. 输入URL ----> 导向request1() ----> 判断自身的路由是否对
  1. Route::any('student/request1', [uses' => 'StudentController@request1']);
    ------------------------------------------------------------------------
  1. public function request1(Request $request)
  2. {
      # (1) 是post? get?
  3.   echo $request->method();
  4.   if ($request->isMethod('GET')) {
  5.     echo 'Yes';
  6.   } else {
  7.     echo 'No';
  8.   }
  9.  
  10.   # (2) 发送的是否是ajax request
  11.   Res = $request->ajax();
  12.   var_dump($res);
  13.  
  14.   # (3) 是否是student控制器下的某个方法
  15.   # 有这个路由么?  
  16.   $request->is('student/*');
  17.   
      # (4) 获取当前URL
      $request->url();
  18. }

Session 处理


一、纵览

原生:没有框架的写法见 - [PHP] 05 - Cookie & Session

配置:config文件夹中的 session.php

启动:app/Http文件夹的 Kernel.php

加载:加上上述的“中间件” - 'web

二、Session的参数操作

实践:发送给服务器一个session带有参数,并在第二次session请求中成功取回参数。

[写法一]

  1. [写法二]
    session()->put('key2', 'value2');
  2. echo session()->get('key2');
  3.  
  4. [写法三]
  5. Session::put('key3', 'value3');
  6. echo Session::get('key3');
    echo Session::get('key4', 'default');  # 没有取到的话,就取到一个替代的默认值
  7.  
  8. [写法四]
    Session::put(['key4'] => 'value4']);   # 以数组的形式存储数据
    echo Session::get('key4', 'default');

放入多个,变为数组。

  1. [写法五]
  2. Session::push('student', 'sean');
    Session::push('student', 'imooc')
  3.  
  4. # student里有了两个items,变为了数组
    $res = Session::get('student', 'default');
    var_dump($res);

取完就删除session中的数据。

  1. [写法六]
  2. Session::push('student', 'sean');
  3. Session::push('student', 'imooc')
  4.  
  5. # 不是读,而是直接取走;取第二次就没值了
  6. $res = Session::pull('student', 'default');
  7. var_dump($res);

获取所有的数据。

  1. [写法七]
  2. $res = Session::all();
  3. var_dump($res);

获取所有的数据。

  1. [写法八]
    if (Session::has('key')) {
      $res = Session:all();
      dd($res);
    } else {
  2.   echo '你们老大不在‘;
    }

删除数据。

  1. [写法九]
    # 1.删除指定的数据
    Session::forget('key1');
    $res = Session:all()
    dd($res);
  2.  
  3. 2.清空session数据
    Session::flush();

只有第一次存在,之后就没了。

  1. [写法十]
  2. Session::flash('key-flash', 'val-flash');
    echo Session::get('key-flash');

响应处理


一、Response 响应

路由:

  1. Route::any('response', [uses' => 'StudentController@response']);

响应:【以json的格式】

二、重定向

  • 不带参数
  1. response()中:
  2.  
  3. return redirect('session2');

类似于:goto 到了seesion2的“路由映射的函数”。

  • 带参数

[写法一]

  1. response()中:
  2.  
  3. return redirect('session2')->with('message', '我是快闪数据');

session2中提取参数;默认参数是:’暂无信息‘。

  1. [写法二]
    return redirect()->action('StudentController@section2')->with('message', '我是快闪数据');
  2.  
  3. [写法三]
  4. return redirect()->route(<别名>)->with('message', '我是快闪数据');
  • 返回上一个页面
  1. return redirect()->back();

中间件


一、大纲

二、定义中间件

  • 路由
  1. Route::any('activity0', [uses' => 'StudentController@activity0']);
  2. Route::any('activity1', [uses' => 'StudentController@activity1']);
  3. Route::any('activity2', [uses' => 'StudentController@activity2']);
  • 中间件

[1] 创建

[create app/Http/Middleware/Activity.php]

next 是个函数;Closure是一种类型;

【前置操作,因为在请求前设置的逻辑】

以下是后置操作的例子

[2] 注册

app/Http/Kernel.php

可见,中间件就是个“类”。

[3] 使用

活动页面需要中间件的验证,时间到了才能可用!没到,则跳转到宣传页面。

  

[4] 访问

  1. public function activity0(){
  2.   return '活动就要开始';
  3. }
  4.  
  5. public function activity1()
  6. {
  7.   return '活动进行中';
  8. }
  9.  
  10. public function activity2()
  11. {
  12.   return '活动进行中';
  13. }

[Laravel] 05 - Controller的更多相关文章

  1. 对 Laravel 的 Controller 做 Unit Test

    之前尝试过对 Laravel 的 Controller 做 Feature Test,但是在业务变得越来越复杂之后,我感觉对 controller 里的函数也没了自信,急需对功能函数做 Unit Te ...

  2. Laravel 控制器 Controller

    一.控制器存在的意义 路由可以分发请求:路由中还可以引入 html 页面:我们可以在 route/web.php 中搞定一切了:但是如果把业务逻辑都写入到路由中:那路由将庞大的难以维护:于是控制器就有 ...

  3. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由

    视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态 ...

  4. Laravel 控制器 Controller 传值到 视图 View 的几种方法总结

    单个值的传递   with public function index() { $test = "测试"; return view('test.index')->with(' ...

  5. Laravel 中 Controller访问Model函数/常量

    <?php // User.php class User extends Model { ; //进行中 const USER_TYPE_TEST = 'test'; //测试用户 // 需要在 ...

  6. [Code::Blocks] Install wxWidgets & openCV

    The open source, cross platform, free C++ IDE. Code::Blocks is a free C++ IDE built to meet the most ...

  7. 本人SW知识体系导航 - Programming menu

    将感悟心得记于此,重启程序员模式. js, py, c++, java, php 融汇之全栈系列 [Full-stack] 快速上手开发 - React [Full-stack] 状态管理技巧 - R ...

  8. [Full-stack] 世上最好语言 - PHP

    前言 本篇是对个人PHP, Laravel系列博文的总结与思考. 目的在于理清并熟练如下过程: "需求 --> Usercase --> UI --> 框架 --> ...

  9. Laravel 在哪些地方使用了 trait ?

    laravel 框架大量使用了traits. 简单举几个例子: 在Eloquent中使用了trait .然后在model初始化的时候,有个boot方法,会自动判断当前的类用了哪些trait.然后得到一 ...

随机推荐

  1. aps.net手写验证模型的方法

    /// <summary> /// 基础验证类 /// </summary> public class BaseValidator { /// <summary> ...

  2. WTL中最简单的实现窗口拖动的方法(转)

    目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏.众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢? ...

  3. WindowManager$BadTokenException: Unable to add window permission denied for this window type

    10-11 11:47:27.472: E/AndroidRuntime(12804): java.lang.RuntimeException: Unable to start activity Co ...

  4. POJ 1595 素数打表水题

    [题意简述]:给出N和C,让我们求出N以内的包含N的素数,然后依据若N以内的素数为奇数个,就将中间2*c-1个素数输出:若为偶数个.就将中间2*c个素数输出. [分析]:仅仅要题意理解就简单了. 详见 ...

  5. 学员会诊之02:SVN协作以及Page类的设计

    三层架构的学生管理系统是我们第一个稍微大型的项目:分层.一个解决方案多个Project,所以值得我们停下来好好审查审查. 1.测试SVN服务器地址 我们的作业要求学员创建自己的SVN服务器,并且将代码 ...

  6. python emoji 表情过滤

    http://my.oschina.net/jiemachina/blog/189460 注意替换的这些emoji是标准的表情字符,每个表情本来是2个字节,替换成字符串后,每个表情就变成12个字符了, ...

  7. Spark机器学习(8):LDA主题模型算法

    1. LDA基础知识 LDA(Latent Dirichlet Allocation)是一种主题模型.LDA一个三层贝叶斯概率模型,包含词.主题和文档三层结构. LDA是一个生成模型,可以用来生成一篇 ...

  8. JAVA分库分表的实现方案

    分库分表的实现方案无非2种:1.本地,2.远程.而在本地一般有2种实现(1.业务代码级别   2.jdbc级别), 其中jdbc级别的本地代理方案的代表有:当当开源的 shardingsphere,远 ...

  9. 设置tomcat 编译文件位置【转】

    问题: 将项目发布到tomcat时,发现tomcat的cclasses目录下无任何编译后的文件. 解决方法:设置MyEclipse的文件编译目录即可: http://my.oschina.net/u/ ...

  10. 浏览器对HTML5特性检測工具Modernizr

    近期在做公司移动端运营的项目,需求中多处地方都会涉及动画. 相信非常多前端开发都会有这样的感触,对CSS3中的动画属性非常熟悉,可是因为对动画运动过程的理解不深入,经常仅仅能望而止步.CSS3中动画这 ...