Estou tentando redirecionar para a página anterior com uma mensagem quando há um erro fatal.
App::fatal(function($exception)
{
return Redirect::back()->with('msg', 'The Message');
}
Na visão, tentando acessar a mensagem com
Sessions::get('msg')
Mas nada está sendo processado, estou fazendo algo errado aqui?
s
e adicioneuse
onde for necessário. Além disso - deve funcionar.Respostas:
Experimentar
e dentro da sua visão chame isso
fonte
return Redirect::back()->with('msg', 'The Message');
como obter o "msg" aqui?Session::has('msg')
Session::has('msg')
e o 'msg' não está lá.withErrors('some error')
- então precisa ser uma string em vez de uma matriz.Controlador
Lâmina:
fonte
return redirect()->back()->with('success', 'your message here');
Abordagem alternativa seria
Controlador
Visão
fonte
No Laravel 5.4, o seguinte funcionou para mim:
fonte
withErrors()
método em que a resposta é uma matriz com dois elementos:['msg', 'The Message']
. Veja a API para obter parâmetros aceitáveis: laravel.com/api/4.2/Illuminate/Http/…withErrors()
método são uma matriz com um elemento que é umkey => value
par, em que o valor é uma matriz. API 5.4: laravel.com/api/5.4/Illuminate/Http/…Você tem um erro (erro de ortografia):
Deveria estar:
Eu acho que agora deve funcionar, funciona para mim.
fonte
Basta definir a mensagem flash e redirecionar para voltar da sua função de controlador.
E então você pode receber a mensagem no arquivo blade de exibição.
fonte
{!! Session::get("msg", '') !!}
deveria ser o suficiente.get()
já verifica se a chave existe e retorna o valor padrão caso contrário.No Laravel 5.5 :
Na visualização usando o Blade:
fonte
No laravel 5.8, você pode fazer o seguinte:
e na lâmina:
fonte
Parei de escrever isso para laravel em favor do pacote Laracasts que lida com tudo isso para você. É realmente fácil de usar e mantém seu código limpo. Existe até um laracast que cobre como usá-lo. Tudo que você tem a fazer:
Puxe a embalagem pelo Composer.
Inclua o provedor de serviços em app / config / app.php.
Adicione um alias de fachada a esse mesmo arquivo na parte inferior:
Puxe o HTML para a exibição:
Há um botão fechar à direita da mensagem. Isso depende do jQuery, portanto, verifique se ele foi adicionado antes da sua inicialização.
mudanças opcionais:
Se você não estiver usando o bootstrap ou quiser pular a inclusão da mensagem em flash e escrever o código você mesmo:
Se você deseja visualizar o HTML extraído
@include('flash::message')
, pode encontrá-lovendor/laracasts/flash/src/views/message.blade.php
.Se você precisar modificar as parciais, faça:
As duas visualizações de pacotes agora estarão localizadas no diretório `app / views / packages / laracasts / flash / '.
fonte
no controlador
Por exemplo
no arquivo blade A mensagem será armazenada na sessão e não na variável.
Por exemplo
fonte
Para o Laravel 5.5+
Controlador:
Lâmina:
fonte
Eu enfrentei o mesmo problema e isso funcionou.
Controlador
Visão
fonte
Para o laravel 5.6. *
Ao tentar algumas das respostas fornecidas no Laravel 5.6. *, Fica claro que houve algumas melhorias que vou postar aqui para facilitar as coisas para aqueles que não conseguiram encontrar uma solução com o restante das respostas.
PASSO 1:Vá para o seu arquivo Controller e adicione isso antes da aula:
PASSO 2: adicione isto onde deseja retornar o redirecionamento.
PASSO 3: Vá para o seu arquivo blade e edite da seguinte maneira
Depois teste e agradeça mais tarde.
Isso deve funcionar com o laravel 5.6. * E possivelmente 5.7. *
fonte
Para o Laravel 3
Apenas um aviso sobre a resposta de @giannis christofakis; para quem usa o Laravel 3, substitua
com:
fonte
Laravel 5.6. *
Controlador
Modelo de lâmina
Enyoj
fonte
Recebi esta mensagem quando tentei redirecionar como:
Quando o caminho certo é:
fonte
Laravel 5.8
Controlador
Lâmina
fonte