Ir para conteúdo
Fórum Script Brasil
  • 0

Laravel - Exibir mensagem ao usuário e voltar à Index se o registro não for encontrado


marsuga

Pergunta

Pessoal, me ajudem por favor!

Criei um formulário na minha Index em que o usuário digita um código de cliente e quando o registro existe ele mostra os dados na view Show. Entretanto, quando o registro não existe preciso criar uma mensagem de erro e um botão para voltar à Index, mas não estou conseguindo e estou perdido nos conceitos. Não sei onde é mais correto ocorrer essa validação (na view show ou no controller?). Quando o registro existe ele está trazendo corretamente do banco de dados.

 

 

Index
...
  <form class="form-inline" method="post" action="{{ url('/entidades/show') }}">   
    {{ csrf_field()}} 
    <label for="mci" class="mb-2 mr-sm-2">MCI:</label>
    <input type="text" class="form-control mb-2 mr-sm-2" id="mci" name ="mci" style="max-width:120px;" maxlength="9" placeholder="Digite o MCI" name="mci">    
    <button type="submit" class="btn btn-primary mb-2">Consultar</button>
  </form>
...
 
Show
....
 
    <table class="table table-primary"> 
    <tr>        
        <td>MCI: {{$cd_cli->cd_cli}}</td>
        <td>Entidade: {{$nome->nome}}</td> 
    </tr>
    </table>
  ...
 
Controller
...
public function show(Request $request){            
            $mci = $request->get('mci');
            $entidades = Entidade::where('cd_cli', $mci)->get()->first();  
            if($entidades == null){
                echo "Não encontrado";  
                //Preciso criar um botão aqui ou na minha view show????? 
               //Onde é mais correto fazer essa validação? No controller ou na view?
               //Como faço para voltar à index????
            }                  
 
            if($entidades <> null){             
                return view ('/entidades/show')->with('nome',$entidades)-                 >with('cd_cli',$entidades);   
                        
            }                                                  
        } 
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

O Laravel é dividido em várias partes, os mais importantes são os routes, os controllers e os blades. Para fazer o usuário voltar no blade index se digitar errado, o controller é que vai verificar o que o usuário digitou no blade, caso ele tenha acertado, aí ele vai para o blade show. Em seguida, um código exemplo:

astudy>laravel>routes>web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\ControllerTeste;
Route::get('/',[ControllerTeste::class,'index']);

astudy>laravel>app>Http>Controllers>ControllerTeste.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ControllerTeste extends Controller {
    function index(request $request){
        $mensagem="";
        if($request->input('teste')=="1234"){
            return view('show');} else {
                if($request->input('teste')!==null){
            $mensagem="Você errou, tente de novo";}}
        return view('index',['mensagem'=>$mensagem]);}
}

astudy>laravel>resources>views>index.blade.php
<h1>{{$mensagem}}</h1>
<form>   
    Digite o código: <input name=teste><br>
    <input type=submit>
</form>

astudy>laravel>resources>views>show.blade.php
<body style="width:50%;margin:0 auto"><div style=height:5%></div>      
<h1>Parabéns, você acertou!</h1>

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...