Laravel-datatables: рдПрдХ рд╣реА рджреГрд╢реНрдп рдореЗрдВ рдХрдИ рдбреЗрдЯрд╛рдЯреИрдмрд▓реНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдорд╛рд░реНрдЪ 2017  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: yajra/laravel-datatables

рд╕рдорд╕реНрдпрд╛ рдпрд╛ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢

рдореЗрд░реЗ рдкрд╛рд╕ 2 рдбреЗрдЯрд╛рдЯреЗрдмрд▓реНрд╕ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореБрдЭреЗ рдЙрд╕реА рдкреЗрдЬ рдкрд░ рджрд┐рдЦрд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреЗ рдкреЗрдЬ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдбреИрд╢рдмреЛрд░реНрдб рдкреГрд╖реНрда рдХреЛ рдЙрди рджреЛрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ:

  • HtmlBuilder рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рддрд╛рд▓рд┐рдХрд╛ рдкрд░ рдмрдирд╛рддрд╛ рд╣реИ
  • HTML рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреГрд╢реНрдп рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рдХрд╛ рд╕рд╛рдордирд╛ рд╣реЛрддрд╛ рд╣реИ

рдореЗрд░реЗ рд╕рд╡рд╛рд▓ :

  • рдХреНрдпрд╛ рдореИрдВ HtmlBuilder рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд╕рд░реА рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ?
  • рдХреНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ (рдПрдХ рдЖрдИрдбреА рдХреЗ рд╕рд╛рде?), рдЗрд╕рд▓рд┐рдП рдЙрд╕ рдЖрдИрдбреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рд╕реНрддреБрдд HTML рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ?

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ

рдореЗрд░реЗ рд╕реЗрд╡рд╛рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ:

    public function boot()
    {
        View::composer(['dashboard', 'user.index'], function(\Illuminate\View\View $view){
            $userTable = Datatables::getHtmlBuilder()
                ->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.username')])
                ->addColumn(['data' => 'name_en', 'name' => 'name_en', 'title' => trans('messages.name (english)')])
                ->addColumn(['data' => 'name_jp', 'name' => 'name_jp', 'title' => trans('messages.name (japanese)')])
                ->addColumn(['data' => 'phone_number', 'name' => 'phone_number', 'title' => trans('messages.phone number')])
                ->addColumn(['data' => 'extension', 'name' => 'extension', 'title' => trans('messages.extension')])
                ->addAction([])
                ->ajax(route('user_index_data'))
            ;
            $view->with('userTable', $userTable);
        });

        View::composer(['dashboard', 'group.index'], function(\Illuminate\View\View $view) {
            $groupTable = DataTables::getHtmlBuilder()
                ->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.group username')])
                ->addColumn(['data' => 'name', 'name' => 'name', 'title' => trans('messages.group name')])
                ->addColumn(['data' => 'users', 'name' => 'users', 'title' => trans('messages.active users')])
                ->addAction([])
                ->ajax(route('group_index_data'));
            $view->with('groupTable', $groupTable);
        });
    }

рдбреИрд╢рдмреЛрд░реНрдб рдореЗрдВ .blade.php

@section('content')
    <div class="row">
        <div class="col-sm-6 col-xs-12">
            {!! $userTable->table() !!}
            {!! $userTable->scripts() !!}
        </div>
    </div>
    <div class="row">
        <div class="col-sm-6 col-xs-12">
            {!! $groupTable->table() !!}
            {!! $groupTable->scripts() !!}
        </div>
    </div>
<strong i="20">@endsection</strong>

рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╡рд░рдг

  • рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо: рд╡рд┐рди 10 (Laragon 2.1.4)
  • PHP рд╕рдВрд╕реНрдХрд░рдг: 7.0.12
  • рд▓рд╛рд░рд╡реЗрд▓ рд╕рдВрд╕реНрдХрд░рдг: 5.4.15
  • рд▓рд╛рд░рд╡реЗрд▓-рдбрд╛рдЯрд╛рд╡реЗрдмрд▓реНрд╕ рд╕рдВрд╕реНрдХрд░рдг: 7.3.0

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ

image 8

рд╕рднреА 3 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВрдиреЗ рдЖрд╕рдкрд╛рд╕ рдХреБрдЫ рдЦреБрджрд╛рдИ рдХреА рдФрд░ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓ рдЧрдпрд╛ред

рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реВрдВ:

    public function register()
    {
        $this->app->bind('datatables.html.userTable', function () {
            return $this->app->make(Builder::class);
        });
        $this->app->bind('datatables.html.groupTable', function () {
            return $this->app->make(Builder::class);
        });
    }

рдлрд┐рд░ рдмреВрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ () рдореИрдВ рдмрд┐рд▓реНрдбрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ 'рдЖрдИрдбреА' рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ:

    public function boot()
    {
        View::composer(['dashboard', 'user.index'], function(\Illuminate\View\View $view){
            $userTableBuilder = app('datatables.html.userTable');
            $userTable = $userTableBuilder
                ->setTableAttribute('id', 'userTable')
                ->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.username')])
                ->addColumn(['data' => 'name_en', 'name' => 'name_en', 'title' => trans('messages.name (english)')])
                ->addColumn(['data' => 'name_jp', 'name' => 'name_jp', 'title' => trans('messages.name (japanese)')])
                ->addColumn(['data' => 'phone_number', 'name' => 'phone_number', 'title' => trans('messages.phone number')])
                ->addColumn(['data' => 'extension', 'name' => 'extension', 'title' => trans('messages.extension')])
                ->addAction([])
                ->ajax(route('user_index_data'))
            ;
            $view->with('userTable', $userTable);
        });

        View::composer(['dashboard', 'group.index'], function(\Illuminate\View\View $view) {
            $groupTableBuilder = app('datatables.html.groupTable');
            $groupTable = $groupTableBuilder
                ->setTableAttribute('id', 'groupTable')
                ->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.group username')])
                ->addColumn(['data' => 'name', 'name' => 'name', 'title' => trans('messages.group name')])
                ->addColumn(['data' => 'users', 'name' => 'users', 'title' => trans('messages.active users')])
                ->addAction([])
                ->ajax(route('group_index_data'));
            $view->with('groupTable', $groupTable);
        });
    }

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ:

image 9

рдЦреЛрдЬ рдФрд░ рдЫрдБрдЯрд╛рдИ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@Mopster рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк app('datatables.html') рдиреАрдЪреЗ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 public function boot()
    {
        View::composer(['dashboard', 'user.index'], function(\Illuminate\View\View $view){
            $userTable = app('datatables.html')
                ->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.username')])
                ->addColumn(['data' => 'name_en', 'name' => 'name_en', 'title' => trans('messages.name (english)')])
                ->addColumn(['data' => 'name_jp', 'name' => 'name_jp', 'title' => trans('messages.name (japanese)')])
                ->addColumn(['data' => 'phone_number', 'name' => 'phone_number', 'title' => trans('messages.phone number')])
                ->addColumn(['data' => 'extension', 'name' => 'extension', 'title' => trans('messages.extension')])
                ->addAction([])
                ->ajax(route('user_index_data'))
            ;
            $view->with('userTable', $userTable);
        });

        View::composer(['dashboard', 'group.index'], function(\Illuminate\View\View $view) {
            $groupTable = app('datatables.html')                
->addColumn(['data' => 'username', 'name' => 'username', 'title' => trans('messages.group username')])
                ->addColumn(['data' => 'name', 'name' => 'name', 'title' => trans('messages.group name')])
                ->addColumn(['data' => 'users', 'name' => 'users', 'title' => trans('messages.active users')])
                ->addAction([])
                ->ajax(route('group_index_data'));
            $view->with('groupTable', $groupTable);
        });
    }

Datatables::getHtmlBuilder() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рд▓реМрдЯрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ IoC рдореЗрдВ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрди рдЬрд╛рдПрдЧрд╛ред

@ рдпрдЬреНрдЮ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ! рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

hohuuhau picture hohuuhau  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alejandri picture alejandri  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

FilipeBorges1993 picture FilipeBorges1993  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nasirkhan picture nasirkhan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ghost picture ghost  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ