【发布时间】:2018-02-15 11:37:57
【问题描述】:
我们想将数据从控制器传递到 Laravel(框架)中的另一个控制器。在我们的 Controller.php 中,我们在 __construct 函数中有一个中间件代码,它设置了一个环境和一个人。
Controller.php 中的代码
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->environment = session()->get('environment');
$this->person = session()->get('person');
return $next($request);
});
}
在不同的控制器中,我们将 2 个参数(请求数据)和(数据 ID)传递给另一个控制器函数。我们尝试了很多方法来传递数据。在这一刻,我们丢失了我们的 $this 数据,例如 environment 和 person,变量 environment 和 person 存在但为空。
我们尝试过:
$postController = new \App\Http\Controllers\Publication\Post\IndexController();
$postController->duplicate($request, data_get($publication, 'id'));
或者
app('App\Http\Controllers\Publication\Post\IndexController')->duplicate($request, data_get($publication, 'id'))
在 Post\IndexController@duplicate 中,我们丢失了 $this 数据(空)。 我们试图获取 $this->enviroment 之类的数据,但这个变量是空的。
有人知道如何通过中间件填充的变量传递数据吗?
【问题讨论】:
-
首先在另一个控制器中调用控制器是不好的做法!!