validation - 如何在 laravel 之外正确实例化 Iluminate 类

标签 validation laravel eloquent

我有 Eloquent 在 Laravel 之外工作,没有任何问题。现在我也尝试通过以下方式使用验证类:

<?php

namespace User;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Validation\Validator;

class User extends Model {

    private $rules = array(
        'firstName' => 'required|min:2|max:50',
        'lastName'  => 'required|min:2|max:50',
    );

    public function validate($data)
    {
        $v = Validator::make($data, $this->rules);
        return $v->passes();
    }

}

执行该代码给我一个错误:

 Call to undefined method Illuminate\Validation\Validator::make()

这是正确的,因为方法 make 不在类 Validator 上,而是在他的工厂中: enter image description here

如何才能正确实例化验证库以使其正常工作?

顺便说一句,这是我的 composer.json:

{
    "require": {
        "slim/slim": "^2.6",
        "illuminate/database": "^5.1",
        "illuminate/validation": "^5.1"
    },
    "autoload": {
        "classmap": [
            "app/model"
        ]
    }

}

最佳答案

要让验证包在 Laravel 之外工作,您还需要翻译包。

所以首先创建一个翻译器的实例,然后用它来创建一个验证工厂。

工作示例

<?php

/*
Required composer packages:
    illuminate/validation
    illuminate/translation
*/

/*
Translation language files directory is the same as with Laravel
    ./lang/en/validation.php
*/

require_once 'vendor/autoload.php';

// You need to specify where the translation files is
$test_translation_path = __DIR__.'/lang';
$test_translation_locale = 'en';

// Set up data for the validator
$test_input_data = ['field' => 'value'];
$test_input_rules = ['field' => 'required'];

$translation_file_loader = new Illuminate\Translation\FileLoader(new Illuminate\Filesystem\Filesystem, $test_translation_path);

$translator = new Illuminate\Translation\Translator($translation_file_loader, $test_translation_locale);

$validation_factory = new Illuminate\Validation\Factory($translator);

$validator = $validation_factory->make($test_input_data, $test_input_rules);

if ($validator->fails()) {
    die('Validation failed');
}

die('Validation passed!');

关于validation - 如何在 laravel 之外正确实例化 Iluminate 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31366646/

相关文章:

java - Spring MVC validator : validate using current session object

java - Controller 或服务层中的 Spring MVC 验证?

php - 使用 laravel 更新数据库

mysql - 在使用 Eloquent 模型时实现“Not”不起作用

sql - 水平选择每组的第一条和最后一条记录

c - 如何确保给定长度的字符串充满空格?

javascript - 无法禁用 Webstorm 检查 - "Unresolved variable of type"

javascript - 从 php/laravel 循环遍历集合,并将每次迭代中的一个项目添加到 jsPDF 捆绑文档

javascript - Vuejs IF 语句

laravel - 按 Eloquent 访问器字段在 Yajrabox 数据表中排序