【发布时间】:2017-07-13 07:40:43
【问题描述】:
我尝试使用参数调用另一个控制器中的控制器。没有任何参数我没有问题。
return app()->call('App\Http\Controllers\AppointmentController@create');
AppointmentController.php
class AppointmentController extends Controller
{
public function create(CalendarInterface $calendar, Request $request) {
...
}
}
但是当我尝试通过一个时出现错误。
return app()->call('App\Http\Controllers\AppointmentController@create', $response);
AppointmentController.php
class AppointmentController extends Controller
{
public function create($response, CalendarInterface $calendar, Request $request) {
...
}
}
类型错误:传递给 Illuminate\Container\Container::call() 的参数 2 必须是数组类型,给定对象
如果我这样做了
return app()->call('App\Http\Controllers\AppointmentController@create', [$response]);
类型错误:传递给 App\Http\Controllers\AppointmentController::create() 的参数 2 必须实现接口 App\CalendarInterface,在 [...]/app/Http/Controllers/ 中给出的 Illuminate\Http\Request 实例AppointmentController.php:18
【问题讨论】:
-
错误很明显。你需要做
app()->call('App\Http\Controllers\AppointmentController@create', [ $response ]); -
我已经试过了。
Type error: Argument 2 passed to App\Http\Controllers\AppointmentController::create() must implement interface App\CalendarInterface, instance of Illuminate\Http\Request given in [...]/app/Http/Controllers/AppointmentController.php:18 -
为什么要首先调用控制器?不建议这样做。你应该重构你的代码
-
我正在构建一个机器人,当机器人收到消息时,它会调用控制器。机器人可以做很多事情,所以我每件事都有一个控制器。
-
例如使用事件和监听器!!