我试图在框架之外使用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);