haska / laravel-validation

Laravel 验证包

dev-master 2014-05-25 07:15 UTC

This package is not auto-updated.

Last update: 2024-09-24 07:37:25 UTC


README

信息

使用 Composer 安装

然后,如果您使用 Laravel(不是必需的),请将服务提供者添加到 app/config/app.php 文件中的 providers 数组中。

'Haska\Validation\ValidationServiceProvider'

用法

以下是一个示例。假设您需要一个登录表单的验证。首先,创建一个包含必要规则的对象

<?php namespace MyApp\Forms;

use Haska\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 Haska\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 Haska\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());