我想从控制器重定向并传递数据;
public function fortest(Request $request)
{
$user = DB::table('user2s')->where('name', $request->name)->first();
if (isset($user))
{
return redirect('/fortest2', ['user'=>$user]);//compact('user'));
//return $this->fortest2($request);
}
}
public function fortest2(Request $request)
{
return $request->name;
}
Route::get('/fortest', 'UserController@fortest');
Route::get('/fortest2/', 'UserController@fortest2');
直接从控制器内部调用控制器时,代码可以正常工作。数据类型有一个模型。我怎么能做到这一点?
答案 0 :(得分:2)
如果要在重定向中传递数据,可以使用with()
方法。
您必须将其附加到重定向,如下所示:
redirect('/fortest2')->with('data', 'value');
它将保存在您当前的会话中,因此只有在您再次刷新页面之后它才会持续存在。如果你想将它存储更长时间,你必须使用数据库/文本文件等。然后你可以使用
检查它。if (session()->has('data')) { // check if it exists
$value = session('data'); // to retrieve value
}
您还可以使用withErrors()
通过重定向(来自验证)发送错误,使用withInput()
要获得您想要达到的效果,请尝试在控制器中使用此功能。这只会使用重定向发送用户名:
$user = DB::table('user2s')->where('name', $request->name)->first();
redirect('/fortest2')->with('username', $user->name);
然后您可以通过session('username')
答案 1 :(得分:1)
使用重定向时,您需要使用会话传递数据:
return redirect('/fortest2')->with('data', 'some data');
$data = session('data');
或者您可以在数据库中保留数据,然后从那里获取数据。
答案 2 :(得分:0)
尝试这样做
public function fortest(Request $request)
{
$user = DB::table('user2s')->where('name', $request->name)->first();
if(isset($user))
{
return redirect('/fortest2/$user->name');
}
}
public function fortest2($name)
{
return $name;
}
您的路线
Route::get('/fortest', 'UserController@fortest');
Route::get('/fortest2/{$name}', 'UserController@fortest2');