codezero/validator

该软件包已被废弃且不再维护。未建议替代软件包。

表单输入验证器

1.0.1 2014-08-22 22:36 UTC

This package is auto-updated.

Last update: 2022-02-01 12:38:14 UTC


README

Build Status Latest Stable Version Total Downloads License

本软件包提供了一个易于使用的界面来处理服务器端表单验证,并允许您无需太多努力即可创建自定义表单验证类。

尽管本软件包的核心不受任何框架的限制,但我已包含一个特定于Laravel的ServiceProvider和ValidationService实现。

我还包含了一个ValidationTrait和一个外观(两者均为Laravel),以便您可以使用您最喜欢的方式使用此软件包(更多详情见下文)。

安装

通过Composer安装此软件包

"require": {
	"codezero/validator": "1.*"
}

Laravel 4实现

安装后,更新您的app/config/app.php文件,在providers数组中包含对该软件包的service provider的引用

'providers' => [
    'CodeZero\Validator\ValidatorServiceProvider'
]

如果尚未被占用,此软件包将自动注册Validate别名。

您可以通过捕获ValidationException来处理失败的验证。一种自动化的方法是在app/start/global.php中添加以下处理器。但您也可以在try/catch块中捕获它。

App::error(function(CodeZero\Validator\Exceptions\ValidationException $exception)
{
    return Redirect::back()->withInput()->withErrors($exception->getErrors());
});

Laravel特定用法

1. 创建一个FormValidator来验证您的表单

use CodeZero\Validator\FormValidator;

class UpdateUserForm extends FormValidator {

	/**
     * Validation rules
     *
     * @var array
     */	
    protected $rules = [
        'name' => 'required',
        'email' => 'required|email|unique,email,{userId}'
    ];

}

注意{userId}占位符作为示例。

2. 处理输入

创建您的表单,然后在控制器中以以下方式之一处理输入。

使用外观进行验证
$input = Input::all();
$vars = ['{userId}' => $someUser->id];

Validate::form('UpdateUserForm', $input, $vars);

您可以将输入和任何占位符键/值对作为第二个和第三个参数传递,但如果您都省略,则该软件包将自动为您获取Input::all()

为了确保类型安全和在IDE中进行自动完成,您可能需要这样做

Validate::form(get_class(UpdateUserForm), $input, $vars);

或者如果您使用的是PHP 5.5或更高版本,这将更加简洁

Validate::form(UpdateUserForm::class, $input, $vars);
使用特质进行验证
use CodeZero\Validator\Support\ValidatorTrait;

class HomeController extends BaseController {

    use ValidatorTrait;

	public function update()
	{
        $input = Input::all();
        $vars = ['{userId}' => $someUser->id];

		$this->validate(UpdateUserForm::class, $input, $vars);
        
        return Redirect::to('/');
	}

}

3. 显示任何验证错误

在您的表单中显示错误就像为每个字段这样做一样简单

{{ $errors->first('name', '<p>:message</p>'); }}

这就完成了!