Сессия не переходит на вид laravel - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь перенаправить на маршрут и передать данные, и я использовал с, но не ходил, и я также использовал, чтобы просто установить сеансы и затем получить их в представлении, но не идти

Код контроллера

if($socialUser) {

   Session::put('redirect', 'student-dashboard');
   Session::save();

   return redirect('/register/candidate');
}

Просмотреть код

<?php if(\Session::get('redirect')) {

        $redirect = session('redirect');
        echo $redirect;
        die();
    } 
?>  

Но это никогда не вводится, если проверить, и мне нужны данные об этом представлении, поэтому любые советы по этому вопросу будут полезны.

Обратите внимание: - Сессия доступна в контроллере после отправки, и я использую Laravel 5.6

Ответы [ 3 ]

0 голосов
/ 09 октября 2018

Я не уверен, что вам нужно использовать Session::save();, чтобы он работал без него.Попробуйте это.

//controller
if($socialUser) {
   Session::put('redirect', 'student-dashboard');
   return redirect('/register/candidate');
}

//view
@php
    use Session; // or without it just using \Session
    if( Session::has('redirect') ){
      $redirect = Session::get('redirect');
      echo $redirect;
      die();
    }
@endphp

Вы также можете попробовать использовать следующий синтаксис в контроллере

 return redirect('/register/candidate')->with('redirect','student-dashboard');

И в поле зрения

@php 
   if(session('redirect')){
     //your code here
   }
@endphp
0 голосов
/ 09 октября 2018

Вы не можете перенаправить в представлении.Перенаправления имеют ряд кодов состояния HTTP (3XX).Если вы представили представление, то HTTP-заголовки уже отправлены (возможно, с состоянием 200 OK).

Вместо этого выполните перенаправление в вашем контроллере:

if ($socialUser) {
    return redirect('student-dashboard');
}

Если вынеобходимо установить URL перенаправления в представлении по какой-то причине (т.е. вы передаете его скрытому входу), тогда вам нужно будет сделать это: передать его в качестве параметра представления.Не пытайтесь установить это в сеансе.Вы не увидите никаких данных сеанса в вашем контроллере, потому что данные сеанса записываются только после ответа (то есть после того, как ваше представление будет отображено).

0 голосов
/ 09 октября 2018

Вы пробовали код, в котором вместо этого вы устанавливаете $ redirect, как вы спрашиваете в операторе if:

$redirect = \Session::get('redirect');

Также, если вы используете шаблоны blade-серверов, вы можете написать php как;

@php
if (\Session::has('redirect'))
{
    $redirect = \Session::get('redirect');
    echo $redirect;
}
@endphp

* * * * * * * * * * * * * * * * * * * if (Session::has('redirect')), кажется, является правильным способом проверить, существует ли сеанс, согласно документации Laravel 5.0, поэтому я также оставляю это как возможное изменение, которое может помочь вашему коду работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...