2015-09-24 7 views
1

Когда я отправить форму в Laravel, следующий метод управления обрабатывает его:Ошибка при попытке вернуться в Перенаправление Laravel

public function update($id) 
    { 
     //handle input 
     return View::make('generic.success', ["message" => 'Data submitted successfully!']); 
    } 

Это прекрасно работает. Однако вместо того, чтобы возвращать такое представление, я хотел бы вернуть перенаправление, потому что, когда я возвращаю представление напрямую, перезагрузка страницы повторно возвращает форму.

Так что я попытался сделать это:

public function update($id) 
    { 
     //handle input 

     return Redirect::to('/success', ['message' => 'Data submitted successfully!']); 
    } 

В моих маршрутах файл я определил маршрут успеха:

Route::get('success', '[email protected]'); 

и настроить контроллер уведомления для отображения вида:

class NotificationsController extends BaseController { 

    public function success($message) 
    { 
     return View::make('generic.success', ["message" => $message]); 
    } 

Когда я запускаю вышеуказанный код, я получаю следующую ошибку от Laravel:

InvalidArgumentException 
The HTTP status code "1" is not valid. 

Я понятия не имею, что это должно сказать мне, и Google не похож.

Может кто-то пролить свет на эту проблему?

P.S.

Кстати, я был знаком с Laravel, я заметил, что сообщение об ошибке Laravel очень недоброжелательно для пользователя, в котором вместо того, чтобы сообщать мне, что у меня проблема с моим маршрутизатором или контроллером или разрешениями, он отображает эти общие ошибки без гуманного объяснения их причины. Есть ли лучший способ устранить проблемы в Laravel, чем полагаться на это?

Например, в приведенном выше инциденте, точки отчета об ошибке в этой строке кода ...

public function setStatusCode($code, $text = null) 
{ 
    $this->statusCode = $code = (int) $code; 
    if ($this->isInvalid()) { 
     throw new \InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code)); 
    } 

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

+0

При использовании 'перенаправлять :: к()' Функция это показывает ошибку ? – aldrin27

+0

Да. Когда я возвращаю представление (или что-то еще), все в порядке. – jovan

ответ

2

Второй параметр метода перенаправления to() - это код состояния HTTP, который будет возвращен откликом, а не данные, которые будут переданы вместе. Передача данных при перенаправлении на маршрут GET может осуществляться либо по строке запроса, либо по сеансу. Рекомендуемым решением здесь является передача данных через текущий сеанс с использованием метода with(), который передает эти данные для следующего запроса. Так что в вашем случае это будет подход, необходимый:

public function update($id) 
{ 
    return Redirect::to('/success')->with('message', 'Data submitted successfully!'); 
} 

Тогда в вашем методе success вы можете иметь это:

public function success($message) 
{ 
    return View::make('generic.success', ["message" => Session::get('message')]); 
} 

В случае сомнений всегда попытайтесь проверить документацию первым. Решение этого явно указано в Laravel Response Redirects Documentation.

0

Большое спасибо -Bogdan Я нашел в документации, которую вы публикуете, отвечая на мою проблему. В моем случае решение было перенаправлено на действие в контроллере, например ...

return 
    \Redirect::action(
     '[email protected]', 
     array($id) 
    ) 
    ->with(
     'message', 
     '¡El estado de la solicitud ha sido actualizado correctamente!' 
    ) 
; 

перенаправить к способу в контроллере, с одним параметром array($id) и я поставил тоже в сессии сообщение с помощью ->with('message','Mensaje')

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