adriantrainor / laravelvalidator
Laravel 验证器助手
5.6.3
2018-10-22 08:42 UTC
Requires
- php: ^7.1.3
- laravel/framework: >=5.6
- psy/psysh: ^0.9.8
This package is auto-updated.
Last update: 2024-09-22 23:35:12 UTC
README
安装包
composer require adriantrainor/laravelvalidator
注册提供者
'providers' => [
...
AdrianTrainor\LaravelValidator\Providers\ValidatorServiceProvider::class,
]
使用 make:validator
命令创建新的验证器
php artisan make:validator PostsValidator
简单验证器
<?php
namespace App\Validators;
use AdrianTrainor\LaravelValidator\Traits\Validator;
class PostsValidator
{
use Validator;
/**
* Define validator rules
*
* @var array
*/
protected $rules = [
'title' => 'required'
];
/**
* Set custom error messages
*
* @var array
*/
protected $messages = [
'title.required' => 'The title field is required.'
];
/**
* Rename attributes
*
* @var array
*/
protected $customAttributes = [
'title' => 'name',
];
}
唯一规则的示例,其行为取决于帖子是正在创建还是编辑。
<?php
namespace App\Validators;
use AdrianTrainor\LaravelValidator\Traits\Validator;
use App\Models\Post;
class PostsValidator
{
use Validator;
/**
* Define validator rules
*
* @var array
*/
protected $rules = [
'title' => 'required|unique'
];
/**
* Rename attributes
*
* @var array
*/
protected $customAttributes = [
'title' => 'name',
];
/**
* @param Post $post
* @return \Illuminate\Contracts\Validation\Validator
*/
public function edit(Post $post)
{
return $this->make($post->toArray(), [
'title' => [
'required',
Rule::unique('posts')->ignore($post->id),
]
]);
}
}
<?php
namespace App\Http\Controllers;
use App\Validators\PostsValidator;
class PostsController extends Controller {
public function create(Request $request) {
// Validate using default rules
$validator = validatorFactory(PostsValidator::class)->make($request->all());
}
public function edit(Request $request) {
// Validate using a unique exception rule on edit
$validator = validatorFactory(PostsValidator::class)->edit($post);
}
}