Как проверить сеанс has в laravel

#php #laravel

Вопрос:

Я хочу определить, присутствует ли элемент в сеансе с помощью has, но он возвращает значение false .

 $session = $request->session();
 if($session->has($form->formid) ){
            return 'found';       
        }else{
            $session->put($form->formid,$link);
          
            return $session->get($form->formid);
        }
 

в блоке else я устанавливаю сеанс, и он правильно возвращает свое значение . Но во второй раз, когда я проверяю сеанс, он снова переходит в блок «Еще»!
Что здесь не так?

Ответ №1:

Вы не должны использовать сеанс в качестве переменной, можете ли вы попробовать это:

  if($request->session()->has($form->formid) ){
            return 'found';       
        }else{
            $request->session()->put($form->formid,$link);
          
            return $request->session()->get($form->formid);
        }
 

Если вам необходимо сохранить данные флэш-памяти для нескольких запросов, вы можете использовать метод перепрошивки, который сохранит все данные флэш — памяти для дополнительного запроса. Если вам нужно сохранить только определенные флэш-данные, вы можете использовать метод сохранения:

 $request->session()->reflash(); // It flashes all
// or
$request->session()->keep([$form->formid]); // It flashes only formid
 

Ссылка: https://laravel.com/docs/8.x/session#flash-data

Комментарии:

1. Я заменил свой код и вставил перепрошивку в блок else перед возвращением. Но никаких изменений не произошло! @ибрагим-доган