grandadevans/laravel-form-validator

此包已被废弃,不再维护。没有推荐替代包。
最新版本(v0.1.4)的包没有可用的许可证信息。

为Laravel 4生成验证表单的包。

v0.1.4 2014-10-07 01:48 UTC

This package is auto-updated.

Last update: 2022-01-17 22:12:43 UTC


README

Build Status

内容

简介

在使用了Jeffrey Way生成器验证器包一段时间后,我厌倦了复制粘贴表单验证文件的代码,所以我想创建自己的版本。

这个包会做什么?

此包将创建一个包含要验证的验证规则的表单验证文件。

为什么不直接使用生成器包?

因为我作为一个自由职业的网页开发者,客户只有3个或4个,这给我提供了展示我的编程技能的完美机会。这样,当人们问我是否有什么工作时,我提到“白标”和“保密协议”时,就不会显得像是在找借口。

安装

通过Composer安装此包。

"require-dev": {
    "grandadevans:laravel-form-validator": "~0.1.0"
}

然后在你的app/config/app.php中包含服务提供者,将其添加到“providers”数组中

/*
 * app/config/app.php
 */
'providers' => array(
    #########
    'Grandadevans\GenerateForm\ServiceProvider\GenerateFormServiceProvider'
);

别忘了composer.json需要知道从哪里自动加载表单。所以如果表单保存在默认的app/Forms目录中,你只需将其添加到classMap

/*
 * composer.json
 */
"autoload": {
	"classmap": [
		"app/commands",
		"app/controllers",
		"app/models",
		"app/database/migrations",
		"app/database/seeds",
        
        "app/Forms"
    ]
}

另外:因为你已经更改了classMap,所以你需要运行

composer dump-autoload

用法

从命令行,你可以使用以下命令调用包

php artisan generate:form

从你的Laravel安装根目录。

必需参数

只有一个必需参数,那就是表单的名称

选项

  • --dir 这是保存表单的目录 (默认为app/Forms)。请在执行命令之前确保目录存在。
  • --rules 这是一个表示要使用的规则的字符串 (见下文)。
  • --namespace 这是分配给表单的命名空间。

规则选项

这是命令真正发挥作用的地方。规则字符串应由以下内容组成

  1. 要验证的输入字段名称,后面跟着一个竖线(|
  2. 输入需要验证的条件的列表。每个条件由另一个冒号(竖线)分隔
  3. 如果您想验证另一个字段,则用连字符(&)分隔它们,并继续。

示例:如果我想验证一个包含用户名和密码字段的典型登录表单,我会将规则选项设置为以下内容

php artisan generate:form Login --rules="username|required|between:6,50|alpha & password|required|min:8"

输入的每个条件(必填确认等)都将与Laravel文档中提供的条件进行验证。

一旦执行命令,就会生成一个表单并将其放置在指定的目录中(或默认的app/Forms)。

将生成的表单注入到您的控制器(或您想要进行验证的地方)

protected $loginForm;

public function __construct(LoginForm $loginForm)
{
	$this->loginForm = $loginForm;
}

尝试使用以下内容验证输入

$this->loginForm->validate(Input::only(['username','password']));

示例

假设我想创建上述提到的登录表单

步骤1:创建表单

php artisan generate|form Login --rules="username|required|between:6,50|alpha & password|required|min:8"

我可以在app/Forms/FooForm.php中查看该表单。

<?php

use Laracasts\Validation;

/**
 *
 * Class LoginForm
 *
 */
class LoginForm extends FormValidator {

    /**
     * The array of rules to be processed
     *
     * @var array
     */
    protected $rules=[
        'username' => 'required|between:6,50|alpha',
        'password' => 'required|min:8',
    ];
}

步骤2:将表单注入到控制器/模型

/*
 * app/controllers/LoginController.php
 */
public function LoginController extends BaseController
{

    /**
     * @var LoginForm
     */
    protected $loginForm;
    
    /**
     * @param LoginForm $loginForm
     */
    public function __construct(LoginForm $loginForm)
    {
        $this->loginForm = $loginForm;
    }

步骤3:验证输入

    
    /**
     * Validate the login details
     */
    public function validateForm()
    {
        $input = Input::only([
            'username',
            'password'
        ]);
        
        try {
            $this->loginForm->validate($input);
        }
        
        catch(\Laracasts\Validation\FormValidationException $e) {
			return Redirect::back()->withInput()->withErrors($e->getErrors());
	}

        
    // Do something with the data
    
}

测试

在构建此包的过程中,我已经使用以下内容进行了测试

  • PHPSpec - 通用低级测试
  • Codeception - 从命令行进行端到端测试
  • PHPUnit - 单元测试,用于使用Symfony的CommandTester测试命令本身

我还使用了Travis监视构建失败的情况,您可以访问它的Travis CI页面来检查其进度

如果您想查看测试结果,请导航到vendor/grandadevans/laravel-form-validator并运行

composer install --dev

您然后可以单独运行测试

./vendor/bin/codecept run acceptance
./vendor/bin phpspec run
./vendor/bin phpunit

或者您可以运行测试脚本以显示所有结果

./runTests.sh

GitHub和Packagist

您可以通过GithubPackagist找到此包