大纲


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

请求 URL


一、URL 处理方法

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

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

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

public function request1(Request $request)
{
  # (1) url中参数获取
  $request ->input('name');
  $request ->input('sex', '未知');
  # (2) 判断有没有这个参数
  if ($ request->has('name')) {
    echo $request->input('name');
  } else {
    echo '无该参数';
  }
  # (3) 获取所有参数
  $res = $request->all();
  dd($res); }

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

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

Session 处理


一、纵览

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

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

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

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

二、Session的参数操作

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

[写法一]

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

放入多个,变为数组。

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

取完就删除session中的数据。

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

获取所有的数据。

[写法七]
$res = Session::all();
var_dump($res);

获取所有的数据。

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

删除数据。

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

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

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

响应处理


一、Response 响应

路由:

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

响应:【以json的格式】

二、重定向

  • 不带参数
在response()中:

return redirect('session2');

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

  • 带参数

[写法一]

在response()中:

return redirect('session2')->with('message', '我是快闪数据');

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

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

中间件


一、大纲

二、定义中间件

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

[1] 创建

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

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

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

以下是后置操作的例子

[2] 注册

app/Http/Kernel.php

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

[3] 使用

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

  

[4] 访问

public function activity0(){
  return '活动就要开始';
} public function activity1()
{
  return '活动进行中';
} public function activity2()
{
  return '活动进行中';
}

[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. godaddy如何联系客服帮助的技巧和方法

    众所周知,Godaddy是世界最大的域名商和空间商,很多人喜欢在那里买域名或者空间,可是,当我们的域名空间出了问题要怎么办呢?今天闪电博客就给大家介绍一些Godaddy客服联系技巧,减少大家等待的时间 ...

  2. 自动化运维之-PXE实现系统批量自动安装

    转自:https://www.linuxidc.com/Linux/2017-10/147379.htm 本节索引 需求分析 PXE简介 整体方案 服务选择 功能实现 安装调试 错误分析 总结 1 需 ...

  3. ImageProcessor.Web,再也不用自己生成缩略图了

    1.什么是ImageProcessor.Web ImageProcessor.Web是基于ImageProcessor的web图像处理模块,允许开发者使用URL查询字符串参数的方式作为指令执行图像处理 ...

  4. 【转】Vmware14安装Centos7无法上网问题的解决

    原文链接 1. 选择Net模式 修改配置子网ip. 修改子网的IP不要和本机的IP地址在同一个网段 比如本机IP地址信息: 无线局域网适配器 WLAN: 连接特定的 DNS 后缀 . . . . . ...

  5. 【Matplotlib】数据可视化实例分析

    数据可视化实例分析 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为要实现其功能用途而令 ...

  6. CSS中的偏僻知识点

    一.css中的calc 在CSS中有calc属性用于尺寸的计算,可以让百分比和像素值进行运算. div {width : calc(100% - 30px);} 为了兼容性 /*Firefox*/ - ...

  7. C# 使用NLog记录日志入门操作

    环境:win7 64位, VS2010 1.首先用VS2010创建命令行工程NLogDemo 2.在程序包管理器控制台中输入:Install-Package NLog -Version 4.4.12 ...

  8. unity3d的playmaker插件使用教程,三、对象出入触发,声音播放

    对象出入触发是游戏常见的情形.包含同一时候声音播放 首先建立进去区域.新建一个立方体,去掉mesh render. 而且选中 is trigger同意进入 样例里用了unity3d的第一人视角控制,可 ...

  9. 实战c++中的vector系列--vector&lt;unique_ptr&lt;&gt;&gt;初始化(全部权转移)

    C++11为我们提供了智能指针,给我们带来了非常多便利的地方. 那么假设把unique_ptr作为vector容器的元素呢? 形式如出一辙:vector<unique_ptr<int> ...

  10. Atitit 纯java项目的提升进度大法---通用json dsl接口

    Atitit 纯java项目的提升进度大法---通用json dsl接口 1. Json dsl接口1 1.1. Url:  http://aaa.com/api_jsondsl?dsl={}1 1. ...