2014-09-26 79 views
0

我刚刚开始使用laravel中的依赖注入。我尝试在我的一个路由中使用我新创建的控制器时遇到问题。在使用依赖注入的同时实例化控制器

这里是我的代码:

控制器:

class BuildQueueController extends BaseController { 

    protected $queue; 

    public function __construct(BuildQueueInterface $queue) { 
     $this->queue = $queue; 
    } 

    public function all() { 
     $ids = $this->queue->all(); 
     return Response::json($ids); 
    } 

    public function add() { 
     $ids = Input::get('ids'); 
     try { 
     foreach ($ids as $id) { 
      $this->queue->add($id); 
     } 
     } catch (Exception $ex) { 
     return Response::json(array("result" => "fail", "except" => $ex->getMessage())); 
     } 
     return Response::json(array("result" => "pass")); 
    } 

} 

控制器工作正常,我有没有问题,使用到控制器功能的路由时获取数据。

的问题是在下面的代码:

Route::get('/builder', function() { 
    $queueCont = new BuildQueueController(); 
    $queue = $queueCont->all(); 

    return View::make('builder'); 
}); 

我收到错误“传递给BuildQueueController参数1 :: __构造()必须是MyClass的实例,但没有给出”

我知道这是因为构造函数正在寻找我的接口的一个实例,但是为了使用我的控制器,我可以解决这个问题?

回答

0

你不应该手动实例控制器,你应该让Laravel为你做这个,但你应该能够使用IoC容器进行实例化:

$queueCont = App::make('BuildQueueController'); 

内部,它会尝试注入依赖。

+0

谢谢!非常有意义! – arrowill12 2014-09-26 15:32:41