如何在不同的路径请求中传递大型数据集 - Laravel

时间:2018-02-04 08:16:33

标签: php laravel

问题可能不清楚。这是解释。让我们说一下:

路线档案:

Route::get('testing', 'someController@functionOne');
Route::get('testingtwo', 'someController@functiontwo');

控制器文件:

public function functionOne() {
  $this->data = generateReallyBigArray();
  return redirect('testingtwo');
}
public function funtionTwo() {
  // Here $this->data is lost. obviously 'coz this controller file got reinstantiated for @functionTwo
 return view('someview', ['data' => $this->data]);
}
$this->data被击中的那一刻,

testingtwo迷失了。如何在不同的路径请求中传递此数据?或者,如果还有其他方法可以做到这一点。

我在考虑这样做:

public function functionOne() {
  $this->data = 'somedata';
  return $this->functionTwo();
}
public function funtionTwo() {
  // Here $this->data is lost. obviously 'coz this controller file got reinstantiated for @functionTwo
 // even this doesn't work. Exception: Method get does not exist
 return Route::get('testingtwo', function() {
     return view('someview', ['data' => $this->data]);
 });
}

2 个答案:

答案 0 :(得分:3)

使用with()通过会话发送数据 -

public function functionOne() {
   $this->data = 'somedata';
   return redirect('testingtwo')->with('data', $this->data);
}

或者您可以flash()在下次请求时使用数据。

$request->session()->flash('data', $this->data);

答案 1 :(得分:1)

最好的方法是
 traits




  trait Data {

 public function getData(){
 // .....
 }
}
  




并在您的控制器中写




 <代码>使用数据;&#xA;  
&#xA;&#xA;

您可以使用控制器上的特性&#xA;或&#xA;您可以访问您的控制器方法,如这样:

&#XA;&#XA;
 <代码>应用程序( '应用程序\ HTTP \控制器\ controllerName') - &GT; getDataFunction();&#XA;  &#xA;&#xA; 

这会有效,但在代码组织方面很糟糕(记得为ControllerName使用正确的命名空间)

&#xA;