php – 无法使Laravel 4的Validator类在框架之外工作

前端之家收集整理的这篇文章主要介绍了php – 无法使Laravel 4的Validator类在框架之外工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在框架之外使用Laravel’4 Eloquent,因为Illuminate / Database包可以通过作曲家独立使用.

Eloquent本身工作正常,但我阻止尝试实现验证规则.

我先尝试过一些像Ardent这样的预建库,然后使用我自己的代码,但结果却是一样的,我得到了这个致命的错误

Fatal error: Call to a member function make() on a non-object in
vendor\illuminate\support\Illuminate\Support\Facades\Facade.PHP on
line 177

当我调用Validator :: make()时,问题总是开始;

$validator = Validator::make(
    $this->attributes,array('name' => 'required')
);

看看调试似乎是static :: resolveFacadeInstance(‘validator’);被调用,但它只返回null.

我不熟悉Facades如何工作,有人能指出我正确的方向吗?谢谢!

这是我的composer.json:

{
    "require": {
        "illuminate/database": "~4.0","illuminate/validation" : "~4.0","laravelbook/ardent": "dev-master"
    },"config": {
        "preferred-install": "dist"
    },"minimum-stability": "dev"
}

解决方法

对于那些可能需要更多信息的人,我将在这里报告由bencorlett (link)在laravel的github回购中给出的答案:

// Store the factory instance somewhere,Maybe like:

class Validator {

    protected static $factory;

    public static function instance()
    {
        if ( ! static::$factory)
        {
            $translator = new Symfony\Component\Translation\Translator('en');
            static::$factory = new Illuminate\Validation\Factory($translator);
        }

        return static::$factory;
    }

    public static function __callStatic($method,$args)
    {
        $instance = static::instance();

        switch (count($args))
        {
            case 0:
                return $instance->$method();

            case 1:
                return $instance->$method($args[0]);

            case 2:
                return $instance->$method($args[0],$args[1]);

            case 3:
                return $instance->$method($args[0],$args[1],$args[2]);

            case 4:
                return $instance->$method($args[0],$args[2],$args[3]);

            default:
                return call_user_func_array(array($instance,$method),$args);
        }
    }
}

$validator = Validator::make($data,$rules);

猜你在找的Laravel相关文章