我刚开始使用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 :: __ construct()的参数1必须是myclass的一个实例,没有给出”
我知道这是因为构造函数正在寻找我的接口的实例,但为了使用我的控制器,我想解决这个问题吗?
答案 0 :(得分:0)
您不应该手动实例化控制器,您应该让Laravel为您执行此操作,但您应该能够使用IoC容器实例化它:
$queueCont = App::make('BuildQueueController');
在内部,它会尝试注入依赖项。