重定向并传递来自控制器的数据

Redirect and pass data from controller

我想从控制器重定向并传递数据;

 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');

当直接从控制器内部调用控制器时,该代码有效。数据类型有一个模型。我怎样才能做到这一点?

如果要在重定向中传递数据,可以使用with()方法。 您必须像这样将其附加到重定向:

redirect('/fortest2')->with('data', 'value');

它将保存在您当前的会话中,因此它只会一直存在,直到您再次刷新页面。如果您想将其存储更长时间,则必须使用 database/textfile 等。然后您可以使用

检查它
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')

访问

使用重定向时需要使用会话传递数据:

return redirect('/fortest2')->with('data', 'some data');

然后get data from session:

$data = session('data');

或者您可以将数据保存在数据库中,然后从那里获取。

尝试这样做

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');