laracasts/validation

为 Laravel 应用提供简单的验证。

1.3 2014-09-13 13:15 UTC

This package is auto-updated.

Last update: 2024-08-29 04:12:35 UTC


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());