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

Redirecionamentos com mensagens

Boa tarde, queria saber se existe outros métodos de redireciona para outra página com mensagem de por exemplo foi "excluido com sucesso", "você não pode excluir porque a tabela existe dependências no sistema, favor verificar"

Exemplo de deletar

public function deletarusuario($id){
        $user = User::find($id);
        $u = $user['name'];
        $projetos = Projeto::all();
        $projeto_user = DB::table('projeto_user')->get();
        foreach($projetos as $p){
            foreach($projeto_user as $pu){
            if($p->user_id==$user['id'] || $pu->user_id==$user['id'] ){
                    return view ('administrador.usuario')->with('user', $user = User::orderBy('id')->get())
                                                         ->with('instituicao', $instituicao = Instituicao::orderBy('id')->get())
                                                         ->with('deletarErro', $u );
                }
            }
        }
        $user->delete();
        return redirect('/administrador/usuario/1')->with('user', $user = User::orderBy('id')->get())->with('instituicao', $instituicao = Instituicao::orderBy('id')->get())->with('deletarSucesso', $u );
    }

Exemplo de editar

public function editarusuario(UserRequest $request, $id){
        $user = User::find($id);
        $params = Request::all();
        $user->update($params);
        return redirect('/administrador/usuario/1')->with('user', $user = User::orderBy('id')->get())->with('instituicao', $instituicao = Instituicao::orderBy('id')->get())->with('nome', $params['name'] );
    }

Como que está na view

@extends('layout.principal')

@section('conteudo')
<h3 style="text-align:center">Usuários</h3>
<hr>
<div>
    <a href="/administrador/cadastrarusuario" class="btn btn-primary"><span class="glyphicon glyphicon-plus"></span> Cadastrar</a><br><br>
</div>

<h2 style="text-align:center;">Digite o nome do Usuário</h3>

<form class='col-md-12' method='post' action="/administrador/listarusuario">
    <input type="hidden" name="_token" value="{{ csrf_token() }}" />

    <div class='input-group' style='width:340px;text-align:center;margin:0 auto;'>
        <input type='text' class='form-control' name="nome" placeholder='Digite o nome'><br><br>

        <button type="submit" class="btn btn-primary">Buscar</button><br><br>
        <a href="/administrador/usuario" class="btn btn-default">Listar todos os Usuários</a><br><br>
    </div>
</form>

<br><br><br>
<br><br><br>
<br>
@if(isset($deletarErro))
    <div class="alert alert-danger"><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
        <strong>Erro!</strong>
        Não é possivel excluir o usuário '{{ $deletarErro }}', porque este usuário possui dependências dentro do sistema!.
    </div>
@endif

@if(isset($deletarSucesso))
    <div class="alert alert-success"><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
        <strong>Sucesso!</strong>
        O usuário, {{ $deletarSucesso }} foi deletado!.
    </div>
@endif

@if(old('name'))
    <div class="alert alert-success"><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
          <strong>Sucesso!</strong> 
          O usuário '{{ old('name') }}' foi cadastrado.
      </div>
@endif

@if(isset($nome))
    <div class="alert alert-success"><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
        <strong>Sucesso!</strong>
        O usuário '{{ $nome }}' foi alterado!.
    </div>
@endif

<table class="table table-striped table-bordered table-hover">
    <tr>
          <th>ID</th>
          <th>Nome</th>
          <th>Email</th>
          <th>Instituição</th>
          <th>Acesso</th>
          <th>Editar</th>
          <th>Excluir</th>
    </tr>

    @forelse($user as $u)
        <tr>
              <td>{{ $u->id }}</td>
              <td>{{ $u->name }}</td>
              <td>{{ $u->email }}</td>
              <td>{{ $u->instituicao->nome }}</td>
              <td>{{ $u->acesso }}</td>
            <td> 
                  <a href="/administrador/editarusuario/{{$u->id}}"> 
                    <span class="glyphicon glyphicon-pencil"></span>
                  </a>
            </td>

            <td> 
                   <a href="{{$u->id}}" class="glyphicon glyphicon-trash" data-toggle="modal" data-target="#{{$u->id}}"></a>
                  <div id="{{$u->id}}" class="modal fade" role="dialog">
                      <div class="site-wrapper">
                          <div class="modal-dialog">                  
                            <div class="modal-content">
                                  <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal">&times;</button>
                                    <h4 class="modal-title">Usuário.</h4>
                                  </div>
                                  <div class="modal-body">
                                    <p>Deseja excluir o usuário: {{$u->name}}</p>
                                  </div>
                                  <div class="modal-footer">
                                    <a href="/administrador/deletarusuario/{{$u->id}}" class="btn btn-primary">Sim</a>
                                    <a href="/administrador/usuario" class="btn btn-default" data-dismiss="modal">Não</a>
                                  </div>
                            </div>
                        </div>
                      </div>
                </div>
            </td>
          </tr>
    @empty<br><br><br><br>
        <div class="alert alert-danger">
            Você não tem nenhum usuário cadastrado ou não existe!.
          </div>
      @endforelse
</table>
@stop

Porém não funciona.

11 respostas
solução!

Oi Yuri!

Tente acessar suas variáveis na view através da session, por exemplo:

@if(isset(session('deletarErro')))

Segue link da documentação do laravel de como realizar redirecionamento com dados:

https://laravel.com/docs/5.2/responses#redirecting-with-flashed-session-data

Este problema pode estar ocorrendo pois a partir da versão 5.2 do laravel houveram algumas mudanças na forma de se realizar o redirecionamento com dados.

Caso não funcione, compartilhe com a gente o que aconteceu e qual é exatamente sua versão do framework para que eu possa te auxiliar melhor =)

espero ter ajudado.

Vou testar agora, a versão que utilizo do laravel é 5.0

Quando fosse editar um campo mandasse a mensagem que foi alterado com sucesso. Uso Laravel 5.0

public function editar(AgenciaRequest $request, $id){

            $agencia = AgenciaFomento::find($id);
            $params = Request::all();
            $agencia->update($params);
            return redirect()->action('AdministradorController@agenciafomento',['pagina' => 1])->with('agenciafomento', $agencias = AgenciaFomento::orderBy('id')->get())->with('nome',$params['nome']);
    }

Na view está assim

@if(isset($nome))
    <div class="alert alert-success">
        <strong>Sucesso!</strong>
        A agência de fomento, {{ $nome }} foi alterada!.
    </div>
@endif

Oi Yuri, tudo bom?

Lembre-se que quando passamos atributos para a view através do redirect, associamos estes valores a Session. Tente, na sua view, acessar pela Session:

@if(Session::has("nome"))

Segue em anexo a documentação do laravel 5.0 que aborda o redirecionamento: https://laravel.com/docs/5.0/responses#redirects

Sempre que você quiser passar dados no seu redirecionamento, defina a chave no seu redirect:

return redirect()->action('suaAction', seusParametros)->with('chave', $valor);

e na view procure pela chave:

Session::get('chave');

Espero ter ajudado, qualquer dificuldade comente com a gente =)

Use of undefined constant deletarSucesso - assumed 'deletarSucesso' (View: C:\xampp\htdocs\embrapa\base-tuiuiu\resources\views\administrador\agenciafomento.blade.php)
@if(Session::has("deletarSucesso"))
    <div class="alert alert-success"><a href='#' class='close' data-dismiss='alert' aria-label='close'>&times;</a>
        <strong>Sucesso!</strong>
        A agência de fomento, {{ deletarSucesso }} foi deletada!.
    </div>
@endif

Não deu.

Acesse sua variavel pela sessão:

        A agência de fomento, {{ Session::get('deletarSucesso') }} foi deletada!.

Deu certo!

Mais um dos meus controllers parou de funciona e fica mostrando essa mensagem

A página de localhost não está funcionando

Redirecionamento em excesso por localhost
Tente limpar os cookies.
ERR_TOO_MANY_REDIRECTS

Tenta limpar os cookies do seu navegador =)

Deu certo, era um redirecionamento que estava fazendo errado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software