2016-07-08 10 views
2

Я пытаюсь перенаправить в Laravel как этот:Laravel 5,1 Перенаправление с переменной

в мой контроллер:

$state = false; 
    return redirect()->route('newPr')->with('errorMessageDuration', 'error', $state); 

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

<input id="PrId" type="text" value="{{ isset($state) ? $state : '' }}"> 

но почему-то это не работает, оно остается пустым.

Я хочу, чтобы он был сохранен навсегда.

ответ

2

Использование withErrors() с ассоциативным массивом, а не, например, так:

return redirect()->route('newPr')->withErrors(compact('state')); 

Тогда вы можете просто использовать $ ошибок переменных в вашем представлении.

docs От:

переменная $ ошибки всегда определяется и может быть безопасно использовать. Переменная ошибок $ будет экземпляром Illuminate \ Support \ MessageBag. Для получения дополнительной информации о работе с данным объектом, check out its documentation.

+0

не работает: utdev

+0

' $ errors', множественное число.И вы можете безопасно использовать его, не проверяя, является ли он 'isset', потому что он всегда доступен в ваших представлениях. Я обновляю ответ с помощью документов. – rzb

+0

Могу ли я также использовать это: 'return redirect() -> back() -> withErrors (compact ('state'));' – utdev

0

Вы не можете отправить переменную с перенаправлением, но если вы хотите попробовать с сеансом.

Посмотрите на мой старый ответ здесь: Trying to pass a variable to a view, but nothing is shown in the view - laravel

+0

Пробовал ваше предложение не работал 'return redirect() -> back() -> with ($ state); @ if (session ('state')) @ endif' – utdev

2

Попробуйте использовать сессию, чтобы отобразить его,

<input id="PrId" type="text" value="{{ isset(session($state)) ? $session($state) : '' }}"> 
+0

привет, я получаю это сообщение 'Не могу использовать isset() в результате вызова функции (вместо этого вы можете использовать« null! == func() ») – utdev

1

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

$request->session()->flash('error', 'Some error message'); 
return redirect()->route('newPr'); 

И в представлении:

@if (session('error')) 
    The error is {{ session('error') }} 
@endif 
+0

Могу ли я сохранить это навсегда? – utdev

+0

@ JohnDoe2, да, используя 'put' вместо' flash'. – Repox

1

with метод принимает 2 параметра. Первый - это key и второй номер value. Или, если 1-й параметр - это массив, его key будет key и value будет value.

Так что в вашем случае вы можете сделать ->with('state', $state) Или ->with(compact('state'))

with метод сбросит это значение к session так, чтобы извлечь значение, которое вы должны получить его от session как этот session('state')

Вы можете передать любое значение таким образом.