Laravel如何在会话Laravel中存储额外数据/值

Laravel如何在会话Laravel中存储额外数据/值,laravel,session,laravel-5.1,Laravel,Session,Laravel 5.1,我在laravel登录(电子邮件和密码)中使用默认身份验证() 现在我尝试从用户的文本字段中获取输入,如(年龄或城市) 现在我想在会话中存储(年龄/城市) 帮帮我你可以用 会话::put('key','value') 要从会话获取密钥,请使用 Session::get('key'); 您可以使用session()助手函数作为答案 您可以使用助手: 更新 $get_session_age = $request->session()->get('session_age'); 如果要在

我在laravel登录(电子邮件和密码)中使用默认身份验证() 现在我尝试从用户的文本字段中获取输入,如(年龄或城市)

现在我想在会话中存储(年龄/城市)

帮帮我你可以用

会话::put('key','value')

要从会话获取密钥,请使用

Session::get('key');
您可以使用
session()
助手函数作为答案

您可以使用助手:

更新

$get_session_age = $request->session()->get('session_age');

如果要在用户注册后保存年龄和城市,则应将此数据存储在数据库中,而不是会话中。您可以在
app\Http\Controllers\Auth\AuthController.php的
create
方法中添加一些文件
好的,让我来告诉您。如果要将其存储在会话中,请按此方式进行

session('country', $user->country); // save
$country = session('country')`; // retrieve
但这不是我们在类似Laravel的框架中所采用的方式,它使用模型

在每次刷新页面时对用户进行身份验证后,应用程序将查找数据库用户表,以确定该用户是否存在于该表中。经过身份验证的用户模型也是一个用户模型。所以通过它我们可以提取任何列。第一件事是向用户类(Model)$filleble数组添加额外的字段。 所以看起来像这样

User.php

protected $fillable = ['username', 'password', 'remember_token', 'country'];
use Illuminate\Http\Request;

public function testMethod(Request $request)
{
   $someCountry = $request->user()->country; //gets the logged in user country
   dd($someCountry); //dd is die and dump, could be used for debugging purposes like var_dump() method
}
所以,只要在任何地方使用用户名和密码登录,就可以使用请求类或Auth facade。门面不太推荐,所以这里为了你们的好,作为一个新的,我只想说如何使用的要求。假设您希望在TestController.php中检索经过身份验证的用户国家/地区,下面介绍如何在方法中使用它

TestController.php

protected $fillable = ['username', 'password', 'remember_token', 'country'];
use Illuminate\Http\Request;

public function testMethod(Request $request)
{
   $someCountry = $request->user()->country; //gets the logged in user country
   dd($someCountry); //dd is die and dump, could be used for debugging purposes like var_dump() method
}

使用请求

公共功能控制器名称(请求$Request){

获取会话\u年龄

$get_session_age = $request->session()->get('session_age');
使用会话

   public function ControllerName (){

       Session::put('age',$age);

    }
获取会话

$session_age = Session::get('age');
不要忘记在控制器中定义会话或请求

use App\Http\Requests;
use Session;

要在控制器中使用会话,您需要在控制器中首先包括会话

use Session;
session()->put('key',$value);
session()->forget('key');
然后在会话中存储数据。有几种方法可以做到。我更喜欢这一种(在控制器中)

要在视图中显示会话数据,可以这样做

@if(Session::has('key'))
I'v got session data
@else
I don't have session data
@endif
session()->get('key')
//or
session()->get('key','defaul_value_if_session_dont_exist')
要在控制器中获取会话数据,可以这样做

@if(Session::has('key'))
I'v got session data
@else
I don't have session data
@endif
session()->get('key')
//or
session()->get('key','defaul_value_if_session_dont_exist')
当您在会话中处理完数据后,您可以这样删除它(在控制器中)

所有这些会话的基本用法都在正式的Laravel文档中有很好的记录


希望它能帮助你

但我必须写在哪里。我在laravel是新手,你想去哪里都可以:控制器的方法、刀片模板、中间件等等。这取决于你想做什么。Alexey我在获取身份验证值并检查登录时需要这个值。在laravel中检查用户和密码是否匹配的文件?@KevalGarala,请查看upd我回答的ate部分当我点击登录按钮或成功登录时,有没有办法在会话中存储我的文本字段值?但是我必须在哪里书写。我是拉维的新手,你在登录表单中添加了年龄/城市了吗?是的,我在登录表单中添加了这个你需要覆盖
postLogin()
AuthController
中提及此项,它可能会对您有所帮助。不,我不想这样做。当我单击“登录”按钮或成功登录时,有没有办法在会话中存储我的文本字段值?为什么要在会话中存储年龄?为什么不在需要时从auth用户中提取它?有没有办法在会话中存储我的文本字段值我点击登录按钮或成功登录。我已经发布了一个正确的答案。这是非常真实的。但我不想在数据库中存储国家。