[Laravel] 05 - Controller
大纲
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的更多相关文章
- 对 Laravel 的 Controller 做 Unit Test
之前尝试过对 Laravel 的 Controller 做 Feature Test,但是在业务变得越来越复杂之后,我感觉对 controller 里的函数也没了自信,急需对功能函数做 Unit Te ...
- Laravel 控制器 Controller
一.控制器存在的意义 路由可以分发请求:路由中还可以引入 html 页面:我们可以在 route/web.php 中搞定一切了:但是如果把业务逻辑都写入到路由中:那路由将庞大的难以维护:于是控制器就有 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 05.Controller 的路由
视频地址: https://www.bilibili.com/video/av38392956/?p=5 这里面就包含了MVC相关的库 可以通过打开右侧的Nuget库进行查看 这里修改下 ,只需要静态 ...
- Laravel 控制器 Controller 传值到 视图 View 的几种方法总结
单个值的传递 with public function index() { $test = "测试"; return view('test.index')->with(' ...
- Laravel 中 Controller访问Model函数/常量
<?php // User.php class User extends Model { ; //进行中 const USER_TYPE_TEST = 'test'; //测试用户 // 需要在 ...
- [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 ...
- 本人SW知识体系导航 - Programming menu
将感悟心得记于此,重启程序员模式. js, py, c++, java, php 融汇之全栈系列 [Full-stack] 快速上手开发 - React [Full-stack] 状态管理技巧 - R ...
- [Full-stack] 世上最好语言 - PHP
前言 本篇是对个人PHP, Laravel系列博文的总结与思考. 目的在于理清并熟练如下过程: "需求 --> Usercase --> UI --> 框架 --> ...
- Laravel 在哪些地方使用了 trait ?
laravel 框架大量使用了traits. 简单举几个例子: 在Eloquent中使用了trait .然后在model初始化的时候,有个boot方法,会自动判断当前的类用了哪些trait.然后得到一 ...
随机推荐
- js控制json生成菜单——自制菜单(一)
此文档解决以下问题: 1.JSON文件的书写方式 2.jQuery.getJSON()的运用 3.jQuery.each()的运用 4.jQuery的DOM 操作方法之一:.append()的运用 5 ...
- Android ANR Waiting because no window has focus问题分析
转自:https://www.cnblogs.com/MMLoveMeMM/articles/4849667.html 这种问题主要是发生在两个应用页面之间切换的时候,这个临界点的时候,一个页面正在起 ...
- C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程
这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务 ...
- 转: chrome64打开弹出窗flash的办法
https://jingyan.baidu.com/article/380abd0a38f0411d90192c2e.html
- 常见的机器学习&数据挖掘知识点
原文:http://blog.csdn.net/heyongluoyao8/article/details/47840255 常见的机器学习&数据挖掘知识点 转载请说明出处 Basis(基础) ...
- Android系统资源图标android.R.drawable
Android™ 2.1 android.R.drawable Icon Resources Android™ 1.5 android.R.drawable Icon Resources Androi ...
- wifipineapple获取用户上网信息
ssh连接到wifipineapple: 输入连接信息:ssh root@172.16.42.1 输入密码:pineapplesareyummy 安装依赖基本环境: opkg update opkg ...
- C#中使用log4net框架做日志输出
一.用法 1.引入包:https://www.nuget.org/packages/log4net/ 2.Main函数 using System; using System.IO; using log ...
- Linux ext3/ext4数据恢复
2012年12月9日 测试环境: Ubuntu 12.04 X86 +ext4 恢复文件使用的工具:extundelete(点击下载) 说明:当文件异常消失或者rm误删除后,避免在该分区中继 ...
- 基于CentOS 7 搭建 GitLab
系统要求:CentOS 7.2 64 位操作系统 更新软件包 yum update -y 安装和启动 sshd 安装 sshd: yum install -y curl policycoreutils ...