Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

DUVIDA UPDATE LARAVEL

Estou com uma dúvida,eu preciso que minha página da listagem avise quando o meu produto for alterado.Eu consegui fazer a funcao de alteração e o produto é alterado.Assim que o usuário clicar em "alterar produto" os valores são alterados e ele é direcionado para a página inicial de listagem.O instrutor do curso fez com que quando o produto fosse adicionado aparecesse a mensagem de sucesso na página inicial,a qual ele foi redirecionado,só que ele usou as técnicas do "old('nome')"...eu estava tentando desse jeito:

ProdutoController:


        public function alteracao($id){
            $params = Request::all();
            $produto = Produto::find($id);
            $produto->update($params);
            if(empty($produto)){
                return "Produto não alterado";
            }
            else
            {
                $variavel=$produto;
                return redirect()->action('ProdutoController@lista')->with('variavel',$variavel);
            }

        }

Na pagina incial:

@if(isset($variavel))
     <div class="alert alert-success">
            <strong>Sucesso!</strong>O produto  foi alterado.
        </div>

No ProdutoController eu criei uma variável chamada "$variavel" e eu quis que ela recebesse os valores de "$produto",e coloquei para seus valores serem preservados quando eu fosse redirecionado.Ai na pagina de listagem coloquei uma condição para caso a variável existir,ele aparecer essa mensagem...mas não aparece nada!Queria saber onde estou errando.

2 respostas

Oi Victor, tudo bom?

Como fica sua URL nesse redirect com a variavel?

Quando a gente chama um redirect fazemos uma outra requisição para a rota destino. A rota destino é quem renderiza o blade em questão. Então acredito que a variável realmente nem chegue na view, porque ela é passada apenas para a action.

A melhor abordagem para guardar informações entre requests é definir nas flash messages. Algo como:

Session::flash('message', "Sua Menssagem");

A diferença entre o método with e a flash message é que a flash message fica guardada na sessão do usuario no server-side, enquanto o método with apenas define variaveis para a action em sí. Ou seja, essa informação não se perde entre os requests com flash messages =)

Se você quiser resgatar essa mensagem na view pode acessar com o blade:

{{ Session::get('message') }}

Abraço

solução!

Certo,mas como isso ficaria no meu código? Eu teria que criar um sessão com o "sessao_start()"? Como ficaria o código?