2016-06-02 6 views
3

Я использую по умолчанию AUTH() в Laravel логин (адрес электронной & пароль) Теперь я стараюсь принимать входные данные от пользователя в текстовом поле, как (Age или города)Laravel Как хранить дополнительные данные/значение в сессии Laravel

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

Помоги мне

+0

Зачем хранить возраст в сеансе? почему бы не просто извлечь его из авторизованного пользователя, когда это необходимо? – aimme

+0

Есть ли способ сохранить значение текстового поля в сеансе, когда я нажимаю кнопку входа в систему или получаю логин успешно. ? –

+0

Я отправил ответ, чтобы сделать это правильно – aimme

ответ

1

Вы можете использовать

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

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

Session::get('key'); 

Вы можете использовать функцию session() помощника, как @Alexey Mezenin ответ.

Laravel Session Documentation

+0

Но где я должен писать. Я новичок в laravel –

+0

Добавили (а) ваш возраст в городе? – xdevnull

+0

Да, я добавил это в свою регистрационную форму –

3

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

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

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

Update

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

+0

Но где я должен писать.Я новичок в laravel –

+0

Где угодно: метод контроллера, шаблон Blade, промежуточное программное обеспечение и т. Д. Это зависит от того, что вы пытаетесь сделать. –

+0

Alexey Мне нужно это значение, когда значение auth получает и проверяет логин. Какой файл в laravel для проверки пользователя и пароля соответствует или нет? –

0

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

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

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

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

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 
} 
+0

Это правда. Но я не хочу хранить страну в базе данных. –

0

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

общественная функция ControllerName (Request $ запрос) {

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

} 

Получить session_age

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

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

public function ControllerName(){ 

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

    } 

Получить сеанс

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

Не забудьте определить сеанс или запроса в контроллере !!!

use App\Http\Requests; 
use Session; 
0

Для работы с сессией в контроллере необходимо включить сеанс первым в контроллере

use Session; 

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

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

Для отображения данных сеанса в вашем View вы можете сделать это, как этот

@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 here.

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

Смежные вопросы