Laravel5.1 框架表单验证操作实例详解
在Laravel 5.1框架中,表单验证是一个非常重要的功能。通过表单验证,我们能够确保提交的数据符合我们的规范。同时,Laravel 5.1框架内置了许多表单验证的方法,使得开发者可以很方便的实现表单验证功能。
下面,详细讲解Laravel 5.1框架表单验证操作实例,包括表单验证的配置、使用方法、错误信息的输出等。
一、配置
在Laravel 5.1框架中,表单验证的配置位于app/Http/Requests
路径下,我们可以通过执行php artisan make:request
命令创建表单验证类文件。例如,创建一个名为UserRequest
的表单验证类,可以执行以下命令:
php artisan make:request UserRequest
执行上述命令,会在app/Http/Requests
路径下创建一个名为UserRequest.php
的文件,文件内代码如下:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UserRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
关于代码中的两个方法authorize()
和rules()
,它们分别用于判断用户是否有权提交该请求以及验证规则的定义。在authorize()
方法中,如果返回true
,则表示用户有权提交该请求;在rules()
方法中,我们可以定义该请求需要验证的字段和验证规则。例如:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UserRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email|unique:users,email',
'password' => 'required',
];
}
}
上述代码定义了name
、email
和password
三个字段的验证规则,其中:
required
表示字段必填;email
表示字段需要符合邮箱地址格式;unique:users,email
表示字段在users
表中必须唯一。
二、使用
在表单验证类定义之后,我们需要在表单处理方法中使用它来验证提交的数据。以下是一个示例,假设我们在UserController
类中定义了一个store
方法用于处理用户提交的注册表单数据:
<?php
namespace App\Http\Controllers;
use App\Http\Requests\UserRequest;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Store a newly created user in storage.
*
* @param UserRequest $request
* @return Response
*/
public function store(UserRequest $request)
{
// 验证通过,执行下一步操作
}
}
在上述代码中,我们使用了UserRequest
类对用户提交的数据进行了验证。如果验证未通过,Laravel会自动将错误信息返回给前端页面。如果验证通过,我们便可以在方法中进行下一步操作。
三、错误信息输出
在表单验证未通过时,Laravel能够自动将错误信息返回给前端页面。我们可以在页面上展示这些错误信息,以便用户更好地了解错误原因。以下是一个示例:
<form method="POST" action="/user">
@csrf
<div>
<label for="name">Name</label>
<input type="text" name="name" value="{{ old('name') }}">
@if ($errors->has('name'))
<p>{{ $errors->first('name') }}</p>
@endif
</div>
<div>
<label for="email">Email</label>
<input type="email" name="email" value="{{ old('email') }}">
@if ($errors->has('email'))
<p>{{ $errors->first('email') }}</p>
@endif
</div>
<div>
<label for="password">Password</label>
<input type="password" name="password">
@if ($errors->has('password'))
<p>{{ $errors->first('password') }}</p>
@endif
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
在上述代码中,我们使用了$errors
变量来输出错误信息。如果某个字段未能通过验证,我们便可以使用$errors->has()
和$errors->first()
方法来输出错误信息。
四、示例
示例一
假设我们需要对提交的商品信息进行验证。在这里,我们需要确保商品名称、价格、数量和描述字段都不能为空,并且价格和数量必须为数字类型。
首先,我们需要在app/Http/Requests
路径下创建一个名为ProductRequest
的表单验证类,并定义验证规则:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ProductRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'price' => 'required|numeric',
'quantity' => 'required|numeric',
'description' => 'required',
];
}
}
然后,在ProductController
的store
方法中使用ProductRequest
进行表单验证:
public function store(ProductRequest $request)
{
$data = $request->all();
// 验证通过,执行下一步操作
}
最后,在前端页面中输出错误信息:
<form method="POST" action="/product">
@csrf
<div>
<label for="name">Product Name</label>
<input type="text" name="name" value="{{ old('name') }}">
@if ($errors->has('name'))
<p>{{ $errors->first('name') }}</p>
@endif
</div>
<div>
<label for="price">Product Price</label>
<input type="text" name="price" value="{{ old('price') }}">
@if ($errors->has('price'))
<p>{{ $errors->first('price') }}</p>
@endif
</div>
<div>
<label for="quantity">Product Quantity</label>
<input type="text" name="quantity" value="{{ old('quantity') }}">
@if ($errors->has('quantity'))
<p>{{ $errors->first('quantity') }}</p>
@endif
</div>
<div>
<label for="description">Product Description</label>
<textarea name="description">{{ old('description') }}</textarea>
@if ($errors->has('description'))
<p>{{ $errors->first('description') }}</p>
@endif
</div>
<div>
<button type="submit">Submit</button>
</div>
</form>
示例二
假设我们需要对注册表单进行验证。在这里,我们需要确保用户名、邮箱和密码字段都不能为空,并且邮箱字段必须符合邮箱地址格式,用户名和邮箱字段在用户表中必须唯一。
首先,我们需要在app/Http/Requests
路径下创建一个名为RegisterRequest
的表单验证类,并定义验证规则:
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RegisterRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|unique:users,name',
'email' => 'required|email|unique:users,email',
'password' => 'required',
];
}
}
然后,在RegisterController
的register
方法中使用RegisterRequest
进行表单验证:
public function register(RegisterRequest $request)
{
$data = $request->all();
// 验证通过,执行下一步操作
}
最后,在前端页面中输出错误信息:
<form method="POST" action="/register">
@csrf
<div>
<label for="name">Name</label>
<input type="text" name="name" value="{{ old('name') }}">
@if ($errors->has('name'))
<p>{{ $errors->first('name') }}</p>
@endif
</div>
<div>
<label for="email">Email</label>
<input type="email" name="email" value="{{ old('email') }}">
@if ($errors->has('email'))
<p>{{ $errors->first('email') }}</p>
@endif
</div>
<div>
<label for="password">Password</label>
<input type="password" name="password">
@if ($errors->has('password'))
<p>{{ $errors->first('password') }}</p>
@endif
</div>
<div>
<button type="submit">Register</button>
</div>
</form>
以上就是Laravel 5.1框架表单验证操作实例的详细讲解。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Laravel5.1 框架表单验证操作实例详解 - Python技术站