
现在比以往任何时候都更重要的是,你的应用程序中的数据是有效的、准确的,并符合所有的系统要求。它解决了保持数据一致性和避免安全漏洞的需要。
让数据验证变得简单而直观。它遵循一个(MVC)架构,只需要PHP和面向对象编程(OOP)概念的一般知识。此外, Laravel提供了几种 *** 来验证传入的数据。
探索这些 *** 中的一些,以及如何将验证规则应用于你的数据集。
Laravel提供了几个现成的验证规则,当你的应用程序的用户通过表单提交数据。你可以将输入字段标记为必填,设置一个最小或更大的长度,并要求唯一(非重复)的条目和有效的电子邮件地址。Laravel验证器会检查输入是否满足这些规则或你指定的任何其他规则。
这些包括:
required — 字段数据不能为空或空。array — 字段数据必须是一个PHP数组。bail — 验证规则在遇到之一次验证失败后停止执行。email — 字段数据必须是一个有效的电子邮件地址。unique — 字段数据在数据库表中不能有重复的数据。所有的验证 *** 都有优点和缺点, 但它们的多样性使你能够选择更好的 *** 来满足你的需求. 根据你所选择的 *** ,Laravel的验证可以有几种方式,手动或自动错误信息。
最常见的 *** 是code>validate, 用于传入的HTTP请求. 这个 *** 是与请求数据连锁的, 执行验证规则. 你可以用逗号把每个字段的规则分开,如下面的例子所示。
use Illuminate\Http\Request; public function store (Request $request){ $validated = $request->validate([ 'email' => ['required, unique:users, email, bail'], 'name' => ['required'], ]); }
这里,email是一个必需的输入,意味着它不能是空的。此外,它在 users 数据库表中必须是唯一的,确保同一个电子邮件地址不会被注册两次。最后一条规则规定,电子邮件地址也必须是有效的。否则,验证过程将停止。名字字段是必须的,但没有其他规则。
如果任何Laravel验证规则失败, 将自动生成一个响应.
为了更好地理解验证 *** ,请考虑下面的例子。你将为该端点定义一个路由,并创建一个控制器来验证和处理请求数据。
首先,创建一个简单的端点,允许用户存储他们的电子邮件和。
Laravel路由是在web应用的routes/web.php文件中定义的,或者在API的routes/api.php中定义。在这个例子中, 使用api.php:
use App\Http\Controllers\UserController;
Route::post('/store', [UserController::class]);
运行这个Artisan命令来创建控制器:
php artisan make:controller UserController
这个命令在app/Http/Controllers目录下创建一个UserController.php文件。
现在,定义一个 store *** ,在存储前验证进入存储端点的数据。
这个例子将使用这些规则来验证以下字段:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Store new user details.
*
*/
public function store(Request $request){
$validated = $request->validate([
'email' => 'required|unique:users|email',
'age' => 'required|numeric',
'password' => 'required|min:7|confirmed'
]);
// After user data is validated, logic to store the data
}
}
confirmed 允许你要求一个特定的字段两次,以验证数据是否准确,例如用户在注册时重新输入密码。这个规则要求一个叫做 password_confirmation 的字段,其数据必须与password字段相匹配。
如果验证标准得到满足,你的代码将继续正常运行。如果验证失败,会抛出一个 IlluminateValidationValidationException 异常,并返回适当的错误响应。
这个例子是基于一个API,它以 *** ON格式返回 422 Unprocessable Entity HTTP响应。对于Web应用程序,它将重定向到之前的URL以显示错误信息,并将请求数据闪现到会话中。
你可以在你的视图中使用 $errors 变量来显示返回的错误:
@if ($errors->any())
<div class="2345HAOf372f6b2646e2d6c alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
你也可以选择只查看之一个错误或循环查看所有错误。
// Fetch all errors $errors->all() // Fetch only the first error $errors->first()
重新填充表单可以使用户免于重新输入信息,这样他们就可以专注于修复错误了。在电子邮件地址失败的例子中,你可以通过调用 name 字段的旧值来重新填充表单的其他部分。
$name = $request-> old('name')
//Blade helper
<input type="text" name="name" value="{{ old('name') }}">
如果之前没有输入,这个规则将返回 null 。
Laravel提供了另一种写验证的 *** ,叫做表单请求。表单请求是一个自定义的请求类,它可以组织验证并分解你的控制器。
他们有自己的验证和授权逻辑,适合大的输入量,可以用来定义验证规则和自定义错误信息。
要创建一个表单请求,运行这个Artisan命令:
php artisan make:request StoreUserRequest
这个命令在app/Http/Requests目录下创建一个StoreUserRequest.php文件,包含两个默认 *** :
rules 返回请求数据的验证规则。authorize 返回一个布尔值,表示该用户是否有权限执行请求的操作。转换前面的例子,使用一个表单请求。
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreUserRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// Add logic to check if the user is authorized to submit this data.
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, mixed>
*/
public function rules()
{
return [
'email' => 'required|unique:users|email',
'age' => 'required|numeric',
'password' => 'required|min:7|confirmed'
];
}
}
为了定制这些规则的错误信息,你可以重写 FormRequest 类中的messages *** 。
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'email.required' => 'An email address is required',
'email.email' => 'The email address must be valid',
'password.confirmed'=>'Re-type your password as
password_confirmation, passwords does not match'
];
}
注意:数据名称和验证规则在信息数据前用句号(.)分开。
要创建自定义的验证,你可以使用 Validator facade来代替 validate 。验证器实例包含两个参数:要验证的数据和一个验证规则数组。这两个参数被传递给验证器界面的 ::make *** ,生成一个新的验证器实例。
use Illuminate\Http\Request;
public function store (Request $request){
$validator = Validator::make($request->all(),[
'email' => 'required|unique:users|email',
'age' => 'required|numeric',
'password' => 'required|min:7|confirmed'
]);
if ($validator->fails()) {
// Return errors or redirect back with errors
return $validator->errors();
}
// Retrieve the validated input...
$validated = $validator->validated();
// Continue logic to store the data
}
如果你想添加一个自动的直接,你可以在一个预先存在的验证器实例上执行 validate *** 。如果验证失败,XHR请求会产生一个 *** ON响应,状态码是 422 Unprocessable Entity ,或者用户会立即被重定向。
$validator = Validator::make($request->all(),[ 'email' => 'required|unique:users|email', 'password' => 'required|min:7|confirmed' ])->validate();
你也可以通过向 Validate::make method 传递名为 messages 的第三个参数来定制你的错误信息:
$validator = Validator::make($request->all(),[ 'email' => 'required|unique:users|email', 'age' => 'required|numeric', 'password' => 'required|min:7|confirmed' ], $messages = [ 'required' => 'The :attribute field is required.', ]);
注意::attribute 被替换为被验证字段的名称。
执行数据验证对于保持你的数据集的清洁、正确和完整至关重要。数据验证允许你消除数据中的错误,这些错误有可能破坏或影响你的项目。在大规模工作和处理大量数据时, 验证变得越来越重要.
Laravel提供了许多灵活的 *** 来确保通过你的应用程序的数据的完整性和准确性。你可以用默认的和可定制的 *** 来实现复杂的验证逻辑, 使你的代码库结构良好,更容易重用。
宝塔面板另外一个特质是,你无需通过Linux命令行来查看服务器各项指标状况,即可以阿里云服务器类似的可视化图表,查看资源使用、负载、CPU占用及内容使用百分比等指标。 默认监控是关闭,有需要的,可以开启,监控数据默认保存30天,可以自行修改,默认监控数据保存在日志,可手动清理该日志。 监控管理,...
宝塔面板设置主要涉及的是宝塔控制后台自身的参数,包括诸如面板的开关、自动更新及SSL、面板端口设置等。虽然这部分不涉及服务器自身的管理,但对宝塔面板的设置也有其重要。 特别是面板端口、安全入口及面板密码等涉及安全的参数设置。 启动和关闭面板 如果你长时间无需使用到宝塔面板,可以考虑...
Laravel多年来一直是PHP应用程序开发的摇滚明星,这是有充分理由的。庞大的生态系统、活跃的社区、强大的就业市场、成功的初创公司——它拥有一切让采用新技术变得值得的东西。 如果你想学习Laravel,你不需要更进一步。通过浏览本指南,您可以找到最适合您的Laravel教程,与您的知识水平和...
有时似乎有太多的商业首字母缩写词要记住。随着快速变化的技术进步和云计算的出现,新的类别将不断涌现。XaaS 就是这样一个最新的补充。 该领域的大多数读者都知道、和。但是你听说过XaaS吗? XaaS(一切皆服务)涵盖了一切:现在一切都可以成为服务。 这听起来好像很复杂的样子,但别担心——我...
Web服务器负责使浏览器和用户可以访问您的网站。您可能以前听说过,但您可能不知道它是什么或它是如何工作的。幸运的是,我们为这个流行的服务器软件整理了一份快速指南。 在这篇文章中,我们将介绍NGINX的基础知识。我们将看看它是什么,它与其他Web服务器有何不同,以及它是如何工作的。我们还将讨论它...
为您的项目选择框架或语言可能具有挑战性,尤其是在后端,其中维护用户数据和创建API和库是关键。在撰写本文时,最流行的Web开发技术是Node.js和Ruby on Rails。 选择其中一个可能是一项艰巨的任务。这两种技术各有利弊,了解它们将帮助您为您的项目选择最佳选择。我们将在本文中为您提供...