使用自定义刷新的会话数据注册后的Laravel自定义重定向

时间:2019-04-24 09:17:20

标签: php laravel laravel-5 laravel-5.8 laravel-session

我正在使用Laravel 5.8构建一个应用程序,在该应用程序中,注册或登录后,用户将被重定向到自定义页面,并在页面上显示闪烁的会话数据,并显示“欢迎!”。

我注意到RegisterController中的默认重定向行为是一个简单的字符串,不允许我添加自定义重定向。

  * Where to redirect users after registration.
     *
     * @var string
     *
      protected $redirectTo = '/custompage';

我尝试修改此默认行为,用函数替换字符串:

protected function redirectTo()
{
    /* generate URL dynamically */
     return redirect('/custompage')->with('status', 'Welcome!');
}

但是我得到警告

  

ErrorException(E_WARNING)标头不得包含多个   标头,检测到新行

那么,如何重定向到自定义页面并添加我的自定义刷新数据?当然无需修改任何供应商代码。

预先感谢

3 个答案:

答案 0 :(得分:3)

将此更改为

protected function redirectTo()
{
    /* generate URL dynamicaly */
     return '/custompage';
}

它仅返回路径,而不返回,您在这里不需要redirect()

并根据需要使用Session::flash()Session::put()添加会话数据。

答案 1 :(得分:1)

您可以用不同的方式实现您所描述的内容。一种简单的方法是在RegisterController中使用自定义路由的url,然后将该路由添加到您的路由并相应地定义控制器函数。

您将像这样保持RegisterController:

* Where to redirect users after registration.
     *
     * @var string
     *
      protected $redirectTo = '/custompage';

然后为其添加一条路线:

Route::any('custompage', array('as' => 'custompage', 'uses' => 'HomeController@custompage'));

并根据需要定义控制器功能。

答案 2 :(得分:1)

您可以使用redirectTo方法进行操作。此方法应返回字符串而不是响应对象。所以应该是这样

protected function redirectTo()
{
    /* flash data to the session here */
    session(['status', 'Welcome']);
     return '/custompage';
 }