Laravel Как сохранить дополнительные данные / значение в сеансе Laravel

Я использую auth () по умолчанию в логине laravel (электронная почта и пароль). Теперь я пытаюсь получить ввод от пользователя в текстовом поле, например (Возраст или Город)

Теперь я хочу сохранить (Возраст / Город) в моей сессии.

Помоги мне

 aimme02 июн. 2016 г., 18:35
зачем хранить возраст в сессии? почему бы просто не извлечь его из аутентификации пользователя, когда это необходимо?
 Keval Garala02 июн. 2016 г., 18:42
Есть ли способ сохранить значение моего текстового поля в сеансе, когда я нажимаю кнопку входа или получаю вход в систему успешно. ?
 aimme02 июн. 2016 г., 19:09
я отправил ответ, чтобы сделать это правильно

Ответы на вопрос(5)

Ты можешь использоватьsession() помощник:

session('age', 18); // saves age into session

$age = session('age')`; // gets age from session

Обновить

Если вы хотите сохранить возраст и город после регистрации пользователя, вы должны хранить эти данные в БД, а не в сеансе. Вы можете добавить несколько полей вcreate методapp\Http\Controllers\Auth\AuthController.php

 Alexey Mezenin02 июн. 2016 г., 18:41
@KevalGarala, пожалуйста, посмотрите наОбновить раздел моего ответа
 Keval Garala02 июн. 2016 г., 18:34
Но где я должен написать. Я новичок в Laravel
 Keval Garala02 июн. 2016 г., 18:36
Алексей, мне нужно это значение, когда аутентификационное значение получено и проверено логин. Какой файл в laravel для проверки пользователя и пароля совпадает или нет?
 Alexey Mezenin02 июн. 2016 г., 18:35
Везде, где вы хотите: метод контроллера, шаблон Blade, промежуточное программное обеспечение и т. Д. Это зависит от того, что вы пытаетесь сделать.
 Keval Garala02 июн. 2016 г., 18:41
Есть ли способ сохранить значение моего текстового поля в сеансе, когда я нажимаю кнопку входа или получаю вход в систему успешно. ?

ссию в вашем контроллере

use Session;

После этого для хранения данных в сессии. Есть несколько способов сделать это. Я предпочитаю этот (в контроллере)

session()->put('key',$value);

Для отображения данных сеанса в вашем представлении вы можете сделать это следующим образом

@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')

Когда вы закончите со своими данными в сеансе, вы можете удалить их следующим образом (в контроллере)

session()->forget('key');

Все это основное использование сессии хорошо документировано в официальной документации Laravel.Вот.

Надеюсь, это поможет вам

позвольте мне просветить вас. если вы хотите сохранить его в сеансе, сделайте это так.

session('country', $user->country); // save
$country = session('country')`; // retrieve

Но это не то, что мы делаем в Laravel, как фреймворки, он использует модели

как только пользователь проходит аутентификацию каждый раз, когда мы обновляем страницу, приложение ищет таблицу пользователей базы данных, существует ли пользователь в таблице. модель аутентифицированного пользователя также является моделью пользователя. поэтому через него мы можем извлечь любой столбец. Прежде всего, добавьте дополнительные поля в массив $ Fillable класса User (Model). так это будет выглядеть примерно так.

User.php

protected $fillable = ['username', 'password', 'remember_token', 'country'];

поэтому после простого входа в систему с именем пользователя и паролем в любом месте просто используйте класс запроса или фасад Auth. Фасады не слишком рекомендуются, поэтому здесь, для вашего блага, как новый, я бы просто сказал, как использовать Request. Предположим, что вы хотите получить свою страну аутентифицированного пользователя внутри TestController.php, вот как это можно использовать в методах.

TestController.php

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
}
 Keval Garala02 июн. 2016 г., 19:31
Это очень верно. Но я не хочу хранить страну в базе данных.

Использование запроса

публичная функция ControllerName (Запрос $ request) {

   $request->session()->put('session_age', $age);

}

Получить session_age

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

Используя сессию

   public function ControllerName (){

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

    }

Получить сессию

$session_age = Session::get('age');

Не забудьте определить Session или Request в вашем контроллере !!!

use App\Http\Requests;
use Session;

Session::put('key', 'value');

Чтобы получить ключ от сеанса используйте

Session::get('key');

Вы можете использоватьsession() вспомогательная функция как@ Алексей Мезенин ответ.

Документация сессий Laravel

 Keval Garala02 июн. 2016 г., 18:46
Где в AuthController?
 Keval Garala02 июн. 2016 г., 18:41
Нет, я не хочу этого делать. Есть ли способ сохранить значение моего текстового поля в сеансе, когда я нажимаю кнопку входа или получаю вход в систему успешно. ?
 xdevnull02 июн. 2016 г., 18:43
AuthController Ответственный заAuthentication вам нужно сделать это там, или. Добавьте оператор if в контроллер everysingle, чтобы проверить, если пользовательAuthenticated Я не рекомендую этот способ вообще
 xdevnull02 июн. 2016 г., 18:38
Вы должны переопределитьpostLogin() вAuthController обратитесь к этомуstackoverflow.com/questions/30656113/laravel5-custom-login  это может помочь вам.
 Keval Garala02 июн. 2016 г., 18:34
Но где я должен написать. Я новичок в Laravel
 Keval Garala02 июн. 2016 г., 18:37
Да, я добавил это в мою форму входа
 xdevnull02 июн. 2016 г., 18:35
Вы добавили возраст / город в форму входа?

Ваш ответ на вопрос