codezero / validator
该软件包已被废弃且不再维护。未建议替代软件包。
表单输入验证器
1.0.1
2014-08-22 22:36 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpspec/phpspec: ~2.0
This package is auto-updated.
Last update: 2022-02-01 12:38:14 UTC
README
本软件包提供了一个易于使用的界面来处理服务器端表单验证,并允许您无需太多努力即可创建自定义表单验证类。
尽管本软件包的核心不受任何框架的限制,但我已包含一个特定于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>'); }}
这就完成了!