我有中間件將任務放入隊列,並將$ actionName和GET/POST參數傳遞給Job構造函數。此代碼:從作業處理程序調用Laravel控制器操作,並依賴注入
$actionName = last(explode('@', $request->route()->getActionName()));
$arguments = $request->query->all();
$job = new HandleApiRequest($actionName, $arguments);
dispatch($job);
,然後在工作處理程序,我想打電話控制器與方法傳遞的參數(在招聘構造初始化參數,不用擔心)。下面是一個代碼:
$data = app()->call(ApiController::class . '@' . $this->method, $this->arguments);
的問題是,我不能叫控制器使用Request對象(照亮\ HTTP \請求)和它的服務。看起來像控制器走向無限循環,在它服務它只是空的。然後,我看到這個登錄控制檯從工人:
[Illuminate\Contracts\Container\BindingResolutionException]
Target [App\Http\Requests\Request] is not instantiable while building [App\Http\Controllers\Api\ApiController].
的問題是,我怎麼能在正確處理作業初始化請求對象?
謝謝!
我不確定你會怎麼做,但你有沒有試過讓Laravel構建控制器併爲你處理? '$ controller = \ App :: Make(ApiController :: class); call_user_func([$ controller,$ this-> method],$ this-> arguments);'? – user3158900
我試過了,但並沒有解決問題。無論如何,謝謝你的迴應:) – Bushikot