laracasts / validation
为 Laravel 应用提供简单的验证。
1.3
2014-09-13 13:15 UTC
Requires
- php: >=5.4.0
- illuminate/support: ~5.0
Requires (Dev)
- phpspec/phpspec: 2.0.*@dev
README
如果您正在使用 Laravel 5.0,则无需此包。相反,利用新的表单请求类进行验证。
使用 Composer 安装
"require": { "laracasts/validation": "~1.0" }
然后,如果使用 Laravel(非必需),将服务提供者添加到 app/config/app.php
中的 providers
数组。
'Laracasts\Validation\ValidationServiceProvider'
用法
以下是一个示例。假设您需要一个登录表单的验证。首先,创建一个包含必要规则的对象
<?php namespace MyApp\Forms; use Laracasts\Validation\FormValidator; class Login extends FormValidator { /** * Validation rules for logging in * * @var array */ protected $rules = [ 'username' => 'required', 'password' => 'required' ]; }
接下来,将此对象拖到您的控制器(或执行验证的任何地方)。
use MyApp\Forms\Login as LoginForm; use Laracasts\Validation\FormValidationException; // ... protected $loginForm; public function __construct(LoginForm $loginForm) { $this->loginForm = $loginForm; } public function store() { $input = Input::all(); try { $this->loginForm->validate($input); // login user, do whatever, redirect } catch (FormValidationException $e) { return Redirect::back()->withInput()->withErrors($e->getErrors()); } }
如果验证通过,将返回 true
。否则,将抛出一个 FormValidationException
异常。您可以在控制器中捕获它,或者将其传递到例如 global.php
以进行处理。两种方法都可行。
关键是您将为需要验证的每个表单创建一个专门的类。例如,如果用户可以注册您的网站,则您将有一个 Registration
表单对象。可能类似于
<?php namespace MyApp\Forms; use Laracasts\Validation\FormValidator; class Registration extends FormValidator { /** * Validation rules for registering * * @var array */ protected $rules = [ 'username' => 'required', 'email' => 'required|unique:users', 'age' => 'required|integer', 'gender' => 'in:male,female', 'password' => 'required|confirmed' ]; }
现在,只需将此对象注入到您的控制器或应用程序服务中,然后调用其上的 validate()
方法。
$this->registrationForm->validate(Input::all());