TransWikia.com

Problema com Datatables em Laravel 5.2

Stack Overflow em Português Asked by RamonVicente on September 13, 2020

Olá, tentei usar o Datatables server-side e não server-side mas ele não exibe o datatables. Faço tudo de acordo com a documetação (https://datatables.net/) e em tutoriais na internet, mas não funciona e também não exibe nenhum erro (as páginas carregam normalmente).

Meu Controlador:

namespace AppHttpControllers;

use IlluminateHttpRequest;

use AppHttpRequests;

use AppHttpRequestsValidarFuncRequest;

use Redirect;
use Datatables;

use AppFuncionario;
use AppDependente;

class FuncionariosController extends Controller
{
    public function index(){

        $funcionarios = Funcionario::all();
        return view('funcionarios.lista', ['funcionarios' => $funcionarios]);

    }

    public function novoForm(){

        return view('funcionarios.formFuncionario');

    }

    public function salvarFuncionario(ValidarFuncRequest $request){

        $funcionario = new Funcionario();

        $funcionario->create($request->all());

        Session::flash('msg_sucesso', 'Funcionário cadastrado!');

        return Redirect::to('funcionarios/novoForm');

    }

    public function editar($id){

        $funcionario = Funcionario::findOrFail($id);

        return view('funcionarios.formFuncionario', ['funcionario' => $funcionario]);

    }

    public function atualizar($id, ValidarFuncRequest $request){

        $funcionario = Funcionario::findOrFail($id);
        $funcionario -> update($request->all());

        Session::flash('msg_sucesso', 'Funcionário atualizado!');

        return Redirect::to('funcionarios/'.$funcionario->id.'/editar');

    }

    public function listarDpt($id){

        $funcionario = Funcionario::find($id);

        return view('funcionarios.listaDpt', ['funcionario' => $funcionario]);

    }

    public function deletar($id){

        try{

            $funcionario = Funcionario::findOrFail($id);

            $funcionario -> delete();

            Session::flash('msg_sucesso', 'Funcionário deletado com sucesso!');

        } catch(IlluminateDatabaseQueryException $e){

            var_dump($e->errorInfo);

            Session::flash('msg_erro', 'Funcionários com dependente(s) não podem ser deletado!');

        }


        return Redirect::to('funcionarios');

    }

    public function novoDpt($id){

        $funcionario = Funcionario::findOrFail($id);

        return view('funcionarios.novoDept', ['funcionario'=>$funcionario]);
    }



}

Minha view:

@extends('layouts.app')

@section('content')
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">
<link rel="stylesheet" href="//cdn.datatables.net/1.10.12/css/jquery.dataTables.css">

<div class="container">
    <div class="row">
        <div class="col-md-10 col-md-offset-1">
            <div class="panel panel-default">
                <div class="panel-heading">
                    Funcionários
                    <a class="pull-right" href="{{url('funcionarios/novoForm')}}">Adicionar Funcionário</a>
                </div>

                <div class="panel-body">

                        @if(Session::has("msg_sucesso"))
                            <div class="alert alert-success"> {{ Session::get('msg_sucesso')}} </div>

                        @elseif(Session::has('msg_erro'))
                            <div class="alert alert-danger"> {{Session::get('msg_erro')}} </div>

                        @endif

                        <table class="table table-bordered" id="meusFuncionarios">
                            <thead>
                                <tr>
                                    <th>ID</th>
                                    <th>Nome</th>
                                    <th>Sexo</th>
                                    <th>Ações</th>
                                </tr>
                            </thead>
                            <tbody>
                                @foreach($funcionarios as $funcionario)
                                    <tr>
                                        <td>{{$funcionario -> id}}</td>
                                        <td>{{$funcionario -> nome}}</td>
                                        <td>{{$funcionario -> sexo}}</td>
                                        <td>
                                            <a href="funcionarios/{{$funcionario -> id}}/editar" class="btn btn-default">Editar</a>

                                            <script>
                                                function ConfirmarDelete(){

                                                    var confirma = confirm("Deseja mesmo exluir {{$funcionario -> nome}}");

                                                    if(confirma){

                                                        return true;

                                                    } else{

                                                        return false;

                                                    }
                                                }
                                            </script>

                                            {!! Form::open(['method' => 'DELETE', 'url' => 'funcionarios/'.$funcionario->id, 'style' => 'display: inline;',  'onsubmit' => 'return ConfirmarDelete()']) !!}
                                            <button class="btn btn-default">Excluir</button>
                                            {!! Form::close() !!}

                                            <a href="funcionarios/{{$funcionario->id}}/listarDpt" class="btn btn-default">Dependente(s)</a>

                                        </td>
                                    </tr>
                                @endforeach
                            </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

<script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>

<script>
    $(document).ready(function(){
        $('#meusFuncionarios').DataTable();
    });
</script>
@endsection

Minha rout:

<?php

Route::get('/', function () {
    return view('welcome');
});

Route::auth();

Route::get('home', 'HomeController@index');

Route::get('funcionarios', 'FuncionariosController@index');
Route::get('funcionarios/novoForm', 'FuncionariosController@novoForm');
Route::get('funcionarios/{funcionario}/editar', 'FuncionariosController@editar');
Route::post('funcionarios/salvarFuncionario', 'FuncionariosController@salvarFuncionario');
Route::patch('funcionarios/{funcionario}', 'FuncionariosController@atualizar');
Route::delete('funcionarios/{funcionario}', 'FuncionariosController@deletar');

Route::get('dependentes', 'DependentesController@index');
Route::get('dependentes/formDpt', 'DependentesController@novoForm');
Route::post('dependentes/salvarDpt', 'DependentesController@salvar');
Route::delete('dependentes/{dependente}', 'DependentesController@deletar');
Route::get('dependentes/{dependente}/editarDpt', 'DependentesController@editar');
Route::patch('dependentes/{dependente}', 'DependentesController@atualizar');


Route::get('funcionarios/{funcionario}/listarDpt', 'FuncionariosController@listarDpt');
Route::get('funcionarios/{funcionario}/novoDept', 'FuncionariosController@novoDpt');

Route::get('dependentes/{funcionario}/novoForm', 'DependentesController@novoForm');

Route::get('projetos', 'ProjetosController@index');
Route::get('projetos/novoForm', 'ProjetosController@novoForm');
Route::post('projetos/salvarProjeto', 'ProjetosController@salvarProjeto');
Route::get('projetos/{projeto}/editarProjeto', 'ProjetosController@editarProjeto');
Route::patch('projetos/{projeto}', 'ProjetosController@atualizarProjeto');
Route::delete('projetos/{projeto}', 'ProjetosController@deletarProjeto');
Route::get('projetos/{projeto}/listaFunc', 'ProjetosController@listaFunc');

Route::get('projetos/{funcionario}/addFunc', 'ProjetosController@addFunc');
Route::patch('projetos/{projeto}', 'ProjetosController@addBotao');

One Answer

O problema é que tem que ir na pasta app.blade.php (onde fica o head e body para se colocar os links e scripts) e lá colocar os arquivos .js e .css. Tinha feito isso mas o problema é que o javascript tem que ficar acima de qualquer outro script e, no meu caso, estava lá em baixo.

Answered by RamonVicente on September 13, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP