从控制器

时间:2016-10-07 11:36:16

标签: php laravel

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

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

直接从控制器内部调用控制器时,代码可以正常工作。数据类型有一个模型。我怎么能做到这一点?

3 个答案:

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

然后get data from session

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