我想将数据从登录控制器发送到routes/web.php。
在我的登录控制器中.php我有
return redirect()
->intended('/dashboard')
->with([
'name'=>'Joe Steel',
'address'=>'Blk 4, Bryton street',
'gender'=>'male',
]);//this is the data I want to send
在我的路线/网络中.php我有
Route::get('/dashboard', function(){
//from session
$names = Session::get('name');//extract name from session
$address = Session::get('address');//extract name from session
return View::make('view/directory/dashboard', [
'name'=>$names,
'address'=>$address]);
//load web view ,
//send name which would be displayed in
//dashboard.blade.php {{$name}} and {{$address}}
});
在我的仪表板中.php我有
{{$name}} and {{$address}}
这不会产生任何输出。 即它们要出现的位置是空的
当我不给 View::make() 任何变量标识符时,例如 View::make('dashboard',[$names,$address]) 它产生错误 未定义的变量:名称(查看:/laravel/installed/directory.php)
所以我不知道 route/web.php 是否从控制器接收任何东西,我也对如何通过数组将其传递给视图感到困惑。
请问发生这种情况的原因可能是什么
更新
我注意到会话没有从我的控制器传递,我不知道这可能是什么原因。我缺少什么吗?
with() 方法接受键数组作为第一个值,将值本身作为第二个值,所以请尝试 像这样用这样的方法链接,而不是调用它一次。
return redirect()
->intended('/dashboard')
->with('name', 'Joe Steel')
->with('address', 'Blk 4, Bryton street')
->with('gender', 'male');
请尝试将错误值添加到会话数据提取中。
$names = Session::get('name', 'default name');//extract name from session
$address = Session::get('address', 'default address');//extract name from session
并使用相关的视图路径,而不是实际的项目根路径。
return view('directory.dashboard', [
'name'=>$names,
'address'=>$address]);
在路径中使用 . 而不是/in from 资源文件夹。
另外,您可以使用身份验证外观,例如
Auth::user();
在他登录后获取您的用户数据。
您是直接访问路线/dashboard
,还是在被引导后刷新页面?会话数据仅针对单个请求保留。因此,如果您的login
成功并被重定向到/dashboard
,数据将在session
中可用。如果刷新页面或导航离开,则返回的数据将不再可用,因此不会显示。
更新
成功对user
进行身份验证后,您将user
重定向到具有使用with(...)
添加的name
和address
数据的/dashboard
路由。
然后,从session
获取name
和address
数据,并将该数据传递到视图。name
和address
将在用户第一次访问/dashboard
时在视图中可用,因为它是从您的route
发送的,该从您的session
获取数据。如果user
转到另一个页面(例如/dashboard/users
),然后返回到/dashboard
,则name
和address
数据将不可用,因此不会显示。若要在user
转到另一个页面并再次返回时显示name
和address
,需要设置name
和address
,或者仅使用Auth::user()->name;
获取经过身份验证的用户的名称。