PHPackages                             babasultan23/dynamic-datatable - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. babasultan23/dynamic-datatable

ActiveLibrary[Search &amp; Filtering](/categories/search)

babasultan23/dynamic-datatable
==============================

Laravel için geliştirilmiş dinamik DataTable paketi. CRUD işlemleri için Ajax entegrasyonu, özelleştirilebilir arama, sıralama ve filtreleme özellikleri ile birlikte gelir.

1.0.0(1y ago)17MITPHPPHP ^7.3|^8.0

Since Jan 27Pushed 1y ago1 watchersCompare

[ Source](https://github.com/MuhammedVeysiGuler/dynamic-datatable-package)[ Packagist](https://packagist.org/packages/babasultan23/dynamic-datatable)[ RSS](/packages/babasultan23-dynamic-datatable/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

BabaSultan23 Dynamic Datatable
==============================

[](#babasultan23-dynamic-datatable)

Laravel projeleri için geliştirilmiş, filtreleme, arama ve iç içe satır desteği gibi gelişmiş özelliklere sahip güçlü ve esnek bir DataTable paketi.

Özellikler
----------

[](#özellikler)

- 🚀 Laravel projelerine kolay entegrasyon
- 📊 Dinamik kolon yapılandırması
- 🔍 Gelişmiş filtreleme ve arama özellikleri
- 📱 Responsive tasarım
- 🌐 Çoklu dil desteği
- 📦 İç içe (Parent-Child) satır desteği
- 🎨 Özelleştirilebilir aksiyon butonları
- 🔄 Manuel ve otomatik arama seçenekleri
- 🎯 Özel sıralama ve arama eşleştirme

Kurulum
-------

[](#kurulum)

```
composer require babasultan23/dynamic-datatable
```

Yapılandırma
------------

[](#yapılandırma)

Yapılandırma dosyasını yayınlayın:

```
php artisan vendor:publish --provider="BabaSultan23\DynamicDatatable\DynamicDatatableServiceProvider" --tag=config
php artisan vendor:publish --provider="BabaSultan23\DynamicDatatable\DynamicDatatableServiceProvider" --tag=crudAjax

//Dil paketlerine ekleme yapmak isterseniz çalıştırınız
php artisan vendor:publish --provider="BabaSultan23\DynamicDatatable\DynamicDatatableServiceProvider" --tag=lang_path
```

Temel Kullanım
--------------

[](#temel-kullanım)

Laravel uygulamanızda dinamik datatable'ı uygulamak için temel bir örnek:

```
use BabaSultan23\DynamicDatatable\Facades\BabaSultan23DynamicDatatable;

public function index()
{
    $columns = [
            ['data' => 'id', 'title' => 'ID'],
            ['data' => 'name', 'title' => 'Ad Soyad'],
            ['data' => 'email', 'title' => 'E-posta'],
        ];

        $dataTable = BabaSultan23DynamicDatatable::render(
            tableId: 'my-table',
            dataTableName: 'myDatatable',
            columns: $columns,
            fetchUrl: route('package.fetch'),
            title: 'Veri Tablosu'
        );

    return view('package-test', compact('dataTable'));
}

public function fetch(Request $request)
{
    $query = Student::query();

    return BabaSultan23DynamicDatatable::processDataTableRequest($query, $request);
}
```

Gelişmiş Özellikler
-------------------

[](#gelişmiş-özellikler)

### 1. Kolon Yapılandırması

[](#1-kolon-yapılandırması)

Çeşitli seçeneklerle kolonlarınızı tanımlayın:

```
$columns = [
    ['data' => 'id', 'title' => 'ID'],
    ['data' => 'plus', 'title' => '', 'orderable' => 'false'],
    ['data' => 'full_name', 'title' => 'Ad Soyad'],
    ['data' => 'email', 'title' => 'E-posta'],
    ['data' => 'city', 'title' => 'Şehir'],
    ['data' => 'actions', 'title' => 'İşlemler', 'orderable' => 'false']
];
```

### 2. Özel Filtreler

[](#2-özel-filtreler)

DataTable'ınıza özel filtreler ekleyin:

```
$filters = [
    'html' => '

                Şehir Seçin:

                    Tüm Şehirler

    ',
    'js' => [
        'filterElements' => ['cityFilter'],
        'filterData' => "
            d.city = $('#cityFilter').val();
        "
    ]
];
```

### 3. İç İçe Satırlar

[](#3-i̇ç-i̇çe-satırlar)

Parent-child ilişkili satırları etkinleştirin:

```
BabaSultan23DynamicDatatable::render(
    // ... diğer seçenekler ...
    plusButton: true,
    plusParentIdKey: 'parent_id'
);
```

### 4. Özel Aksiyon Butonları

[](#4-özel-aksiyon-butonları)

Her satır için özel aksiyon butonları tanımlayın:

```
BabaSultan23DynamicDatatable::setActionButtons(function ($row) {
    return 'Güncelle
            Sil';
});
```

### 5. Özel Arama ve Sıralama Eşleştirme

[](#5-özel-arama-ve-sıralama-eşleştirme)

Özel arama ve sıralama eşleştirmelerini yapılandırın:

```
BabaSultan23DynamicDatatable::setOrderMapping([
    'full_name' => "CONCAT(users.first_name, ' ', users.last_name)",
    'department_name' => 'departments.name',
])
->setSearchMapping([
    'full_name' => "CONCAT(users.first_name, ' ', users.last_name)",
    'email' => 'users.email',
    'city' => 'users.city'
]);
```

### 6. Manuel Arama Uygulaması

[](#6-manuel-arama-uygulaması)

Manuel arama işlevselliğini etkinleştirin ve özelleştirin:
Etkinleştirildiğinde tablonun manuel araması devre dışı bırakılır ve yazılan custom arama kodları çalışır.

```
BabaSultan23DynamicDatatable::render(
    ....
    manuelSearch: true,
)

BabaSultan23DynamicDatatable::setManuelSearchCallback(function ($query, $searchValue) {
    return $query->where(function($q) use ($searchValue) {
        $q->where('name', 'like', "%{$searchValue}%")
          ->orWhere('email', 'like', "%{$searchValue}%");
    });
});
```

### 7. Yanıt Biçimlendirme

[](#7-yanıt-biçimlendirme)

Yanıt formatını özelleştirin:

```
BabaSultan23DynamicDatatable::setFormatResponse(function ($query, $totalRecords, $filteredRecords) {
    return DataTables::of($query)
        ->with([
            'recordsTotal' => $totalRecords,
            'recordsFiltered' => $filteredRecords,
        ])
        ->addColumn('full_name', function ($data) {
            return $data->first_name . " " . $data->last_name;
        })
        ->rawColumns(['full_name'])
        ->make(true);
});
```

Tam Örnek
---------

[](#tam-örnek)

İşte tüm özellikleri gösteren tam bir örnek:

```
// Controller
public function index()
{
    $columns = [
        ['data' => 'id', 'title' => 'ID'],
        ['data' => 'plus', 'title' => '', 'orderable' => 'false'],
        ['data' => 'full_name', 'title' => 'Ad Soyad'],
        ['data' => 'lesson_name', 'title' => 'Ders'],
        ['data' => 'email', 'title' => 'E-posta'],
        ['data' => 'city', 'title' => 'Şehir'],
        ['data' => 'actions', 'title' => 'İşlemler', 'orderable' => 'false']
    ];

    $dataTable = BabaSultan23DynamicDatatable::render(
        tableId: 'student-table',
        dataTableName: 'studentDatatable',
        columns: $columns,
        fetchUrl: route('package.fetch'),
        title: 'Öğrenci Listesi',
        options: [
            'pageLength' => 10,
            // config içerisindeki dosyadan tüm tablolar için özelleştirilebilir ya da tablo özelinde buradan kullanım
        ],
        filters: [
            'html' => '

                        Şehir Seçin:

                            Tüm Şehirler

                        Tarih:

            ',
            'js' => [
                'filterElements' => ['cityFilter', 'dateFilter'],
                'filterData' => "
                    d.city = $('#cityFilter').val();
                    d.date = $('#dateFilter').val();
                "
            ]
        ],
        plusButton: true,
        plusParentIdKey: 'parent_id',
        manuelSearch: true,
        language: 'tr'
    );

    return view('students.index', compact('dataTable'));
}

// Fetch Metodu
public function fetch(Request $request)
{
    BabaSultan23DynamicDatatable::setOrderMapping([
        'full_name' => "CONCAT(students.name, ' ', students.surname)",
        'lesson_name' => 'lessons.name',
    ])
    ->setSearchMapping([
        'full_name' => "CONCAT(students.name, ' ', students.surname)",
        'lesson_name' => 'lessons.name',
        'email' => 'students.email',
        'city' => 'students.city'
    ])
    ->setActionButtons(function ($row) {
        return 'Güncelle
                Sil';
    })
    ->setManuelSearchCallback(function ($query, $searchValue) {
        return $query->where(function($q) use ($searchValue) {
            $q->where('lessons.name', 'like', "%{$searchValue}%");
        });
    })
    ->setFormatResponse(function ($query, $totalRecords, $filteredRecords) {
        return DataTables::of($query)
            ->with([
                'recordsTotal' => $totalRecords,
                'recordsFiltered' => $filteredRecords,
            ])
            ->addColumn('plus', function ($data) {
                if (Student::where('parent_id', $data->id)->count() > 0) {
                    return '';
                }
            })
            ->addColumn('full_name', function ($data) {
                return $data->name . " " . $data->surname;
            })
            ->addColumn('lesson_name', function ($data) {
                return $data->lesson_name;
            })
            ->addColumn('actions', function ($row) {
                return BabaSultan23DynamicDatatable::getActionButtons($row);
            })
            ->rawColumns(['plus', 'full_name', 'lesson_name', 'actions'])
            ->make(true);
    });

    $query = Student::query();

    // Parent-Child ilişkisi için sorgu
    $parentId = $request->parent_id ?? [];
    if ($parentId != 'null' && $parentId) {
        $query = $query->where('parent_id', $parentId);
    } else {
        $query = $query->whereNull('parent_id');
    }

    // İlişkili tabloları birleştirme
    $query->leftJoin('lessons', 'students.lesson_id', '=', 'lessons.id')
        ->select('students.*', 'lessons.name as lesson_name');

    // Filtre uygulama
    if (isset($request->city) && $request->city !== '') {
        $query->where('students.city', $request->city);
    }

    return BabaSultan23DynamicDatatable::processDataTableRequest($query, $request);
}
```

Kullanılabilir Seçenekler
-------------------------

[](#kullanılabilir-seçenekler)

SeçenekTürVarsayılanAçıklamatableIdstringzorunluTablo için benzersiz tanımlayıcıdataTableNamestringzorunluDataTable örneği için JavaScript değişken adıcolumnsarrayzorunluKolon tanımlamalarıfetchUrlstringzorunluVeri çekme URL'ititlestringnullTablo başlığıoptionsarray\[\]Ek DataTable seçeneklerifiltersarray\[\]Özel filtre yapılandırmasıplusButtonbooleanfalseİç içe satırları etkinleştir/devre dışı bırakplusParentIdKeystring'parent\_id'İç içe satırlar için üst ID alan adımanuelSearchbooleanfalseManuel aramayı etkinleştir/devre dışı bıraklanguagestring'tr'Tablo dili### **NOTLAR**

[](#notlar)

- **plusButton** aktif edilirse **plus kolonunu** eklemeyi unutmayınız: ```
    ['data' => 'plus', 'title' => '', 'orderable' => 'false']
    ```
- **Datatable özellikleri** `config/babasultan23-dynamic-datatable.php` içerisinde yer almaktadır.
- Ek bir özellik olarak **temel CRUD AJAX işlemleri** dinamik olarak `public/js/babasultan23-crudAjax.js` içinde gelmektedir. Kullanmak için sayfanıza yolunu ekledikten sonra aşağıdaki şekilde kullanabilirsiniz: ```
    //Js eklendi
    script src="{{ asset('babasultan23/js/babasultan23-crudAjax.js') }}

    //Örnek Kullanım
    function createStudent() {
        createAjax(
            "studentDatatable",              // DataTable Name
            "create_student",                // formId
            "{{ route('student.create') }}", // URL
            "#add-modal",                    // modalId
            "Kayıt başarıyla oluşturuldu!"   // successMessage (optional)
        );
    }
    ```

Örnek Görünüm
-------------

[](#örnek-görünüm)

[![Dynamic Datatable Örneği](./readme_example_picture/table.png)](./readme_example_picture/table.png)

Katkıda Bulunma
---------------

[](#katkıda-bulunma)

Katkılarınızı bekliyoruz! Lütfen Pull Request göndermekten çekinmeyin.

Lisans
------

[](#lisans)

Bu paket MIT lisansı altında açık kaynak olarak lisanslanmıştır.

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance41

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

522d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/348b838add935fc1c9e87f7ba40b0fcb4dd41cc9b6293e230f44238ea5ccd804?d=identicon)[BabaSultan23](/maintainers/BabaSultan23)

---

Top Contributors

[![MuhammedVeysiGuler](https://avatars.githubusercontent.com/u/74241771?v=4)](https://github.com/MuhammedVeysiGuler "MuhammedVeysiGuler (2 commits)")

### Embed Badge

![Health badge](/badges/babasultan23-dynamic-datatable/health.svg)

```
[![Health](https://phpackages.com/badges/babasultan23-dynamic-datatable/health.svg)](https://phpackages.com/packages/babasultan23-dynamic-datatable)
```

###  Alternatives

[unopim/unopim

UnoPim Laravel PIM

10.5k2.4k](/packages/unopim-unopim)[statamic-rad-pack/runway

Eloquently manage your database models in Statamic.

135224.7k7](/packages/statamic-rad-pack-runway)[nasirkhan/module-manager

Module Manager &amp; Generator for Laravel Starter Kit (https://github.com/nasirkhan/laravel-starter)

1044.6k5](/packages/nasirkhan-module-manager)[api-platform/laravel

API Platform support for Laravel

58171.4k14](/packages/api-platform-laravel)[ecotone/laravel

Ecotone for Laravel — CQRS, Event Sourcing, Sagas, Durable Workflows, and Outbox on top of Laravel Queue, via PHP attributes.

21318.6k3](/packages/ecotone-laravel)[duncanmcclean/statamic-cargo

Comprehensive e-commerce addon for Statamic. Build bespoke e-commerce sites without the complexity.

3416.7k](/packages/duncanmcclean-statamic-cargo)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
