-
-
- 1. 获取地址
-
- 1) 输出当前URL地址
- 2) 获取URL的路由
- 3) 获取 URL地址(除参数外)
- 4) 判断当前路由是否是 request
-
- 2. 获取请求类型
-
- 1) 判断当前的请求类型
- 2) 判断当前的请求是否是 特定的请求(如:是否为get请求)
- 3) 使用
- 4) 请求数据(后期结合数据库使用)
- 以下为上述完整的代码:
-
- 3. 判断请求类型的使用
- 4. 闪存
-
- 1) 将表单提交过来的所有数据 写入闪存
- 2) 把谁写入闪存
- 3) 除了谁,其他的都写入闪存
- 4)把当前所有的数据都写入闪存
-
- 5. 图片上传
-
- 0) 获取图片的上传路径
- 1) 获取上传的文件
- 2) 判断文件是否上传
-
- 6、Cookie
-
- 1)Cookie 的使用场景
- 2)注意:laravel 框架把所有的 Cookie 进行了加密,因此
- 3)查看 cookie
- 4) 设置cookie
-
- 1. 获取地址
-
准备工作:将之前 web.php中的所有路由都注释掉(为了避免有冲突,本例子是为了测试使用)。
- 在 web.php 中定义路由:
Route::get('request', "[email protected]");
- 在 D:\phpStudy\PHPTutorial\WWW\laravel\app\Http\Controllers 下 创建控制器 RequestController.php(可通过 artisan创建)
- 在 控制器 RequestController.php 中写方法 index
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
// laravel的请求
class RequestController extends Controller
{
public function index(Request $request)
{
dd($request);
}
}
注:以下在
RequestController.php
中的
index
方法 中执行,且地址栏访问
www.la.com/request?name=zhangsan
1. 获取地址
1) 输出当前URL地址
2) 获取URL的路由
3) 获取 URL地址(除参数外)
echo $request->url(); // 输出结果:
http://www.la.com/request
4) 判断当前路由是否是 request
2. 获取请求类型
1) 判断当前的请求类型
echo $request->method();
2) 判断当前的请求是否是 特定的请求(如:是否为get请求)
返回值:true|false
var_dump($request->isMethod('POST'));
3) 使用
public function add(Request $request)
{
// 判断当前是否为 get请求
if ($request->isMethod('GET')) {
// 加载添加页面
return view('add');
} else {
// 数据库的入库操作
echo "插入数据库";
}
}
4) 请求数据(后期结合数据库使用)
① 获取所有的请求数据
$data = $request->all();
② 获取特定字段
echo $request->input('name');
③ 设置默认值(如果有值,显示对应的值;没有则使用默认值)
echo $request->input('age', '18');
④ 判断数据是否存在
返回值: true | false
var_dump($request->has('username'));
⑤ 获取部分输入数据
// 两种方式都可以获取到
$data1 = $request->only('name','pass');
$data1 = $request->only(['name', 'pass']);
var_dump($data1);
⑥ 获取除指定数据以外的数据
$data2 = $request->except('_token', 'name');
$data2 = $request->except(['_token', 'name']);
var_dump($data2);
以下为上述完整的代码:
- UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class UserController extends Controller
{
// 用户添加
public function add(Request $request)
{
// 判断当前是否为 get请求
if ($request->isMethod('GET')) {
// 加载添加页面
return view('add');
} else {
// 存入数据库
echo "存入数据库";
// 1. 获取所有的请求数据
$data = $request->all();
dd($data);
// 2. 获取特定字段
echo $request->input('name');
// 3. 设置默认值
echo $request->input('sex', '男');
// 4. 判断提交的数据是否存在(返回值: true | false)
var_dump($request->has('sex'));
// 5. 获取部分输入数据
$data1 = $request->only('name', 'pass');
$data1 = $request->only(['name', 'pass']);
var_dump($data1);
// 6. 获取除指定数据外的数据
$data2 = $request->except('_token', 'name');
$data2 = $request->excepte(['_token', 'name']);
var_dump($data2);
}
}
}
3. 判断请求类型的使用
若该请求为 get 请求,则 加载用户添加页面 ,否则 将数据存入数据库
- route / web.php
Route::match(['get', 'post'], 'admin/user/add', "[email protected]");
- app / controllers / UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Request;
class UserController extends Controller
{
// 用户添加
public function add(Request $request)
{
// 判断当前是否为 get请求
if ($request->isMethod('GET')) {
// 加载添加页面
return view('add');
} else {
// 存入数据库
echo "存入数据库";
}
}
}
- resource / views / add.blade.php
<!doctype html>
<html hljs-string">"en">
<head>
<meta charset="UTF-8">
<title>用户新增</title>
</head>
<body>
<form action="/admin/user/add" method="post">
{{csrf_field()}}
<p>
User:
<input type="text" name="name">
</p>
<p>
Pass:
<input type="password" name="pass">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
</html>
4. 闪存
作用:会将合法的字段值存入闪存,不合法的清空(若:在注册信息的时候,用户名,邮箱都正确,但是电话号码出错,此时会将表单提交过来的全部数据存入闪存,为了提高用户的体验度)
1) 将表单提交过来的所有数据 写入闪存
$request->flash();
2) 把谁写入闪存
$request->flashOnly('name', 'tel', 'email');
3) 除了谁,其他的都写入闪存
// 除了 tel,其他都写入闪存(密码无法写入闪存)
$request->flashExcept('tel');
4)把当前所有的数据都写入闪存
return back()->with('errors', "用户名长度不满足")->withInput();
实例:注册为例
- web.php
// 注册页面
Route::get('reg', "[email protected]");
// 注册操作
Route::post('insert', "[email protected]");
- resources / views / reg.blade.php
<!doctype html>
<html hljs-string">"en">
<head>
<meta charset="UTF-8">
<title>注册</title>
</head>
<body>
<?php
// $errors 为报错信息
if (!is_object($errors)) {
echo "<h1>$errors</h1>";
}
?>
<form action="/insert" method="post">
<p>
{{csrf_field()}}
User:
<input type="text" name="name" value="{{old('name')}}">
</p>
<p>
Pass:
<input type="password" name="pass">
</p>
<p>
Repass:
<input type="password" name="repass">
</p>
<p>
Tel:
<input type="text" name="tel" value="{{old('tel')}}">
</p>
<p>
Email:
<input type="text" name="email" value="{{old('email')}}">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
</html>
- app/Http/LoginController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class LoginController extends Controller
{
// 注册页面
public functin index()
{
return view('reg');
}
// 注册功能
public function insert(Request $request)
{
$name = $request->input('name');
// 写入闪存
// 除了 tel 其他都存入 闪存
$request->flashExcept('tel');
// 判断用户名长度
if (strlen($name) >= && strlen($name) <= ) {
} else {
// 回退到上一个页面
return back()->with('errors', "用户名长度不满足")->withInput();
}
}
}
- 访问 www.la.com/reg
- 运行结果:

5. 图片上传
0) 获取图片的上传路径
- 方法一:
var_dump($_FILES);
运行结果:
array() {
["img"]=>
array() {
["name"]=>
string() "注册界面-Laravel闪存.png"
["type"]=>
string() "image/png"
["tmp_name"]=>
string() "C:\Windows\php542F.tmp"
["error"]=>
int()
["size"]=>
int()
}
}
* 方法二:
dd($requeset->all());
运行结果:
array: [▼
"_token" => "iDFA4HHtnuTL2AvXcf69fUgHXXF1KhGUwYH6MRgU"
"img" => UploadedFile {#365 ▼
-test: false
-originalName: "注册界面-Laravel闪存.png"
-mimeType: "image/png"
-size:
-error:
path: "C:\Windows"
filename: "phpC183.tmp"
basename: "phpC183.tmp"
pathname: "C:\Windows\phpC183.tmp"
extension: "tmp"
realPath: "C:\Windows\phpC183.tmp"
aTime: -- ::
mTime: -- ::
cTime: -- ::
inode:
size:
perms:
owner:
group:
type: "file"
writable: true
readable: true
executable: false
file: true
dir: false
link: false
linkTarget: "C:\Windows\phpC183.tmp"
}
]
1) 获取上传的文件
// 方法一:
$img = $request->file('img'); // img为表单中 的name
// 方法二:
$img2 = $request->img;
dd($img);
打印结果如下:
2) 判断文件是否上传
返回值:true | false
var_dump($request->hasFile('img'));
实例:
- web.php
// 文件上传
Route::get('photo', "[email protected]");
// 处理文件上传
Route::post('upload', "[email protected]");
- resources / views / photo.blade.php
<!doctype html>
<html hljs-string">"en">
<head>
<meta charset="UTF-8">
<title>图片上传</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
<p>
{{csrf_field()}}
Photo:
<input type="file" name="img">
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
</html>
- app / Http / Controllers / UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use app\Http\Requests;
class UserController extends Controller
{
// 图片上传页面
public function photo()
{
return view('photo');
}
// 文件上传处理
public function upload(Request $request)
{
// 如何实现文件上传
// 1.1 判断是否上传文件
// 1.2 把文件移动到指定目录
// 获取上传的文件
// 方法一:
$img = $request->file('img');
// 方法二:
$img2 = $request->img;
// 1. 判断文件是否上传(返回值: true | false)
if ($request->hasFile('img')) {
// 获取文件的后缀名
$ext = $request->file('img')->getClientOriginalExtension();
// 创建新的文件名(时间戳 + 随机数 + 后缀名)
$newFile = time().rand().".".$ext;
// 2. 上传文件操作(把上传的文件移到指定目录)
$request->file('img')->move('./Uploads');
} else {
// 回到上一个页面
return back();
}
}
}
- 在 public 下 创建一个 Uploads 文件夹,用来存储上传的图片
- 访问 www.la.com/photo
bug:该代码实现并未限制 上传文件的类型 ,因此图片,文件等都可以上传
(一般很少用该种上传方式,一般都用 无刷新上传文件,因为界面友好,用户体验度高)
6、Cookie
1)Cookie 的使用场景
- 登录
- 如果未勾选自动登录,默认采用 session(session关闭浏览器会失效)
- 如果勾选了自动登录,默认采用 cookie
- 网站浏览记录
2)注意:laravel 框架把所有的 Cookie 进行了加密,因此
$_COOKIE['name'] != $request->cookie('name');
3)查看 cookie
① 查看所有 cookie
dd($request->cookie());
// 运行结果:
array: [▼
"XSRF-TOKEN" => "iDFA4HHtnuTL2AvXcf69fUgHXXF1KhGUwYH6MRgU"
"laravel_session" => "8a79635d0d58fae23d7ca2abd939661943bdc192"
]
② 查看 指定 cookie
// 方法一:
dd($request->cookie('laravel_session'));
echo $request->cookie('laravel_session');
// 方法二:
echo \Cookie::get('laravel_session');
4) 设置cookie
// 方法一:
\cookie::queue('boy', 'zhangsan', );
// 方法二:
$cookie = cookie('name', 'xiaoming', );
return response('Hello Laravel')->cookie($cookie);
完整代码实例:
- web.php
// 查看 cookie
Route::get('cookie', "[email protected]");
- app / Http / Controllers / UserController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
class UserController extends Controller
{
// 新建 cookie 方法
public function cookie(Request $request)
{
// 查看所有的cookie
dd($request->cookie());
// 查看指定的 cookie
// 方法一:
dd($request->cookie('laravel_session'));
echo $request->cookie('laravel_session');
// 方法二:
echo \Cookie::get('laravel_session');
// 设置cookie
// 方法一:
\Cookie::queue('boy', 'zhangsan', );
// 方法二:
$cookie = cookie('name', 'xiaoming', );
return response('Hello Laravel')->cookie($cookie);
}
}
运行结果: