会话未传递给视图laravel

时间:2018-10-09 07:30:49

标签: php laravel-5

我试图重定向到路由并传递数据,我曾经使用过但没有通过,我也曾经只是简单地设置会话,然后在视图中获取它们但没有通过

控制器代码

if($socialUser) {

   Session::put('redirect', 'student-dashboard');
   Session::save();

   return redirect('/register/candidate');
}

查看代码

<?php if(\Session::get('redirect')) {

        $redirect = session('redirect');
        echo $redirect;
        die();
    } 
?>  

但是,如果进行检查,它将永远不会输入此信息,并且我需要此视图上的数据,因此对此的任何建议都将有所帮助。

请注意:-会话在发送后可以在控制器中使用,我正在使用Laravel 5.6

3 个答案:

答案 0 :(得分:0)

您是否尝试过代码,然后像询问if语句一样设置$ redirect:

$redirect = \Session::get('redirect');

此外,如果您使用的是刀片模板,则可以将php编写为;

@php
if (\Session::has('redirect'))
{
    $redirect = \Session::get('redirect');
    echo $redirect;
}
@endphp

根据Laravel 5.0文档,if (Session::has('redirect'))似乎是检查会话是否存在的正确方法,因此我也认为可能存在的更改可能会帮助您的代码工作

答案 1 :(得分:0)

我不确定您是否需要使用Session::save();来代替它工作。试试这个。

//controller
if($socialUser) {
   Session::put('redirect', 'student-dashboard');
   return redirect('/register/candidate');
}

//view
@php
    use Session; // or without it just using \Session
    if( Session::has('redirect') ){
      $redirect = Session::get('redirect');
      echo $redirect;
      die();
    }
@endphp

您还可以尝试在控制器中使用以下语法

 return redirect('/register/candidate')->with('redirect','student-dashboard');

在视野中

@php 
   if(session('redirect')){
     //your code here
   }
@endphp

答案 2 :(得分:0)

您无法在视图中重定向。重定向具有一系列HTTP状态代码(3XX)。如果您已提交视图,则表明HTTP标头已经发送完毕(状态可能为200 OK)。

相反,请在您的控制器中执行重定向:

if ($socialUser) {
    return redirect('student-dashboard');
}

如果出于某种原因(例如,将其传递给隐藏的输入)需要在视图中设置重定向URL,则只需执行以下操作:将其作为视图参数传递。不要尝试在会话中进行设置。您不会在控制器中看到任何会话数据集,因为会话数据仅在发送响应后(即,呈现视图之后)写入