我的控制器中有一个数组,我想用这个数组数据重定向到另一个路径。
class HomeController {
public function start() {
$dirs = ['X', 'Y'];
return redirect()->route('success', $dirs);
}
public function next($dirs) {
dd($dirs); // aim is getting data here
}
}
我的路线看起来像:
Route::post('/success', ['as' => 'success', 'uses' => 'HomeController@next']);
我尝试了get方法,但后来我需要弄乱网址并将/success/{dirs}
放在那里,这是我不想要的。
实现这一目标的正确方法是什么?
更新
使用它不起作用:S
public function start() {
return redirect()->route('success', $dirs)->with('dirs', $dirs)->with('clientNames', $clientNames);
}
public function next() {
dd(session('dirs') // returns null
}
答案 0 :(得分:4)
route
方法的第二个参数是查询参数,它会将您的数组值附加到路径,如/success?X&Y
。
function route($name, $parameters = [], $absolute = true)
{
return app('url')->route($name, $parameters, $absolute);
}
使用with
方法将数据放入会话中,然后使用另一条路径上的session
辅助函数检索它,而不是将数组传递给路径。
Documentaion:Redirecting with flashed session data
试试这个
<强>路线强>
Route::get('/success', 'HomeController@next')->name('success');
<强>控制器强>
class HomeController
{
public function start()
{
$dirs = ['X', 'Y'];
return redirect()->route('success')->with('dirs', $dirs);
}
public function next()
{
$dirs = session('dirs');
}
}
答案 1 :(得分:1)
你应该试试这个:
附加数据with()
方法,并使用session:get()
方法在另一个函数中访问您的数据,如:
use Illuminate\Http\Request;
class HomeController {
public function start(Request $request) {
$dirs = ['X', 'Y'];
return redirect()->route('success')->with('dirs', $dirs);
}
public function next(Request $request) {
$dirs = array();
if($request->session()->has('dirs')) {
$dirs = $request->session()->get('dirs');
}
}
}