Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 02.12.2016 21:25:51

Меню с сортировкой при клике на заголовки столбцов

Нужно сделать меню с сортировкой при клике на заголовки столбцов. Ну можно самому написать, благо, подбор контента с пагинацией с фильтрами и сортировкой я разобрал. Но может есть уже готовое решение?


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#2 03.12.2016 12:21:37

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Меню с сортировкой при клике на заголовки столбцов

Datatables

Не в сети

#3 05.12.2016 01:18:25

Re: Меню с сортировкой при клике на заголовки столбцов

Классная штука, но чёт не работает.


Тест BBcode

Route::get('bb', 'Controller@getBasic');
Route::post('bb6', 'Controller@getBasicData');



    public function getBasic()
    {
        return view('www');
        //return Datatables::eloquent(PageType::query())->make(true)->data;
    }

    public function getBasicData()
    {

      //  return Datatables::eloquent(PageType::query())->make(true)->data;

      return ' {
            "draw": 1,
  "recordsTotal": 2,
  "recordsFiltered": 2,
  "data": [
    {
        "id": "1",
      "name": "Satou",
    },
    {
         "id": "2",
      "name": "Satou2",
    },
}';




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Laravel DataTables Tutorial</title>

    <!-- Bootstrap CSS -->
    <link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="//cdn.datatables.net/1.10.7/css/jquery.dataTables.min.css">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    <style>
        body {
            padding-top: 40px;
        }
    </style>
</head>
<body>
<div class="container">
    @yield('content')

    <table id="example" class="display" cellspacing="0" width="100%">
        <thead>
        <tr>
            <th>id</th>
            <th>name</th>

        </tr>
        </thead>
        <tfoot>
        <tr>
            <th>id</th>
            <th>name</th>

        </tr>
        </tfoot>
    </table>

</div>

<!-- jQuery -->
<script src="//code.jquery.com/jquery.js"></script>
<!-- DataTables -->
<script src="//cdn.datatables.net/1.10.7/js/jquery.dataTables.min.js"></script>
<!-- Bootstrap JavaScript -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>

<script>
    $(document).ready(function() {
        $('#example').DataTable( {
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": "http://iis24/bb6",
                "type": "POST"
            },
            "columns": [
                { "data": "id" },
                { "data": "name" },
            ]
        } );
    } );
</script>

<!-- App scripts -->
@stack('scripts')
</body>
</html>


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#4 05.12.2016 16:52:19

Re: Меню с сортировкой при клике на заголовки столбцов

Эт, конечно, малось парево, но вот готовое решение. Тут берёт все поля с модели и выводит аджакс табилцу с сортировкой.

            Route::get('datatables',['uses'=>'Controller@getIndex', 'as' => 'datatables']);
                    Route::get('datatables/{data}',['uses'=>'Controller@anyData', 'as' => 'datatables.data']);
                   
                    public function getIndex()
                    {
                        //закидиываем в представление имена полей
                        return view('www', array('arrFieldsNames'=>Schema::getColumnListing('pageType')));
                    }

                    /**
                     * Process datatables ajax request.
                     *
                     * @return \Illuminate\Http\JsonResponse
                     */
                    public function anyData()
                    {
                        //конкретные поля
                        //$pgsT = PageType::select(['id', 'name', 'email', 'created_at', 'updated_at'])->get();
                      //  return Datatables::of($pgsT)->make();
                        //все поля
                        return Datatables::of(PageType::query())->make();

                    }
                   
                    <table class="table table-bordered" id="users-table">
                        <thead>
                        <tr>
                            <?php foreach ( $arrFieldsNames as $fName){    ?>
                                <th><?php print $fName; ?></th>
                             <?php } ?>
                        </tr>
                        </thead>
                    </table>
                    <script>
                        $(document).ready(function() {

                            $('#users-table').DataTable({
                                processing: true,
                                serverSide: true,
                                ajax: '{!! url('datatables/data') !!}'
                            });
                        } );
                    </script>


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

#5 05.12.2016 18:56:03

Re: Меню с сортировкой при клике на заголовки столбцов

И если что, можно фигачить фильтры из массива

        $arr = [
            ['id', '>', '170'],
            ['name', '=', '1']
        ];
        print DB::table('pageType')->where($arr)->get();

У этого плагина тоже можно фитльтры юзануть, но они, к сожалению, только для статичного варианта https://datatables.net/examples/plug-in … ering.html

$('#example').DataTable(); который, а при аджакс уже не работает.


Связь со мной:
Скайп(с аватаркой) - shyraks
Телеграм - @Mramoris или +7 999 260 13 20

Не в сети

Подвал раздела