我试图重定向到路由并传递数据,我曾经使用过但没有通过,我也曾经只是简单地设置会话,然后在视图中获取它们但没有通过
控制器代码
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
答案 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,则只需执行以下操作:将其作为视图参数传递。不要尝试在会话中进行设置。您不会在控制器中看到任何会话数据集,因为会话数据仅在发送响应后(即,呈现视图之后)写入 。