Veritabanı Izgara Kütüphanesi


    × Bunları biliyor muydunuz?
"Başlangıç dosya ve kontrolcüleri üzerinden tüm kontrolcü ve görünümlere veri gönderilebilir."


DBGrid kütüphanesi veritabanında yer alan tabloların manipüle edilmesine yönelik oluşturulmuş yapıdır. Bu kütüphane ile tablo üzerinde listeleme, veri ekleme, güncelleme, silme, arama gibi işlemlerin yapılabilmesini sağlar.

 

 

# Kurulum


ZN SE ve ZN CE dağıtımları için terminal kurulum komutu.

↓ composer require znframework/package-database

 

 

# Yapılandırma


DBGrid ile ilgili tasarımsal ayarları yapabilmek için aşağıdaki dosyada yer alan dbgrid dizisi kullanılır.

Dosya: Config/ViewObjects.php
Array $buttonNames Buton isimlendirmesi ile ilgili ön tanımlı ayarlar tutulur.
Array $placeHolder Yazı kutuları üzerinde görünen metinlerle ilgili ön tanımlı ayarlar tutulur.
Array $styleElement Elementlere stil vermek için kullanılır.
Array $attributes Izgara üzerindeki nesnelere özellik değer çiftleri eklemek için kullanılır.
Array $pagination Izgaranın sayfalama barına ilişkin ön tanımlı ayarlar tutulur.

 

 

# Yöntemler


String create(String $table = NULL)
This limit(Int $limit)
This columns(String ...$select)
This processColumn(String $column)
This joins(Array ...$joins)
This orderBy(Mixed $orderBy, String $type = NULL)
This groupBy(Scalar ...$args)
This where(Mixed $column, String $value = NULL, String $logical = NULL)
This whereGroup(Array ...$args)
This table(String $table)
This exclude(Strings ...$columns)
This hide(Strings ...$objects)
This inputs(Array $inputs)
This outputs(Array $outputs)
This add(String $objects)

 

 

# Create (ZN >= 4.0.1)


Veri tablosunu oluşturmak için kullanılır.

Parametreler

String $table = NULL Veritabanı tablo adı.
Return String

Kullanımlar

echo DBGrid::create('users');

Yukarıdaki kodun çalıştırıldığında oluşturulan tablo.

 

 

# Limit (ZN >= 4.0.1)


Kayıtların kaçar kaçar listeleneceğini ayarlamak için kullanılır.

Parametreler

Int $limit Bir sayfada en fazla kaç kayıt olacağı.
Return This

Kullanımlar

echo DBGrid::limit(1)->create('users');

 

 

# Columns (ZN >= 4.0.1)


Hangi kolonların tabloda yer alacağını belirlemek için kullanılır. DB::select() yöntemi ile aynı kullanımına sahiptir.

Parametreler

String ...$columns Görüntülenecek kolonlar.
Return This

Kullanımlar

echo DBGrid::limit(1)
           ->columns('id as ID', 'name as Name')
           ->create('test');

 

 

# ProcessColumn (ZN >= 4.0.1)


Bu yöntem daha çok birleştirilmiş tablolar kullanılacaksa devreye sokulur. Update, delete gibi işlemler için ön tanımlı olarak id kolonu kullanılır. Eğer farklı bir kolon kullanılacaksa bu yöntemden yararlanılır.

Parametreler

String $processColumn İşlemlerin hangi kolon üzerinden yapılacağı.
Return This

Kullanımlar

echo DBGrid::processColumn('name')
           ->create('test');

 

 

# Joins (ZN >= 4.0.1)


Seçili tablo farklı tablolar arasında birleştirme yapılacaksa kullanılır.  Birleştirilmiş tablolar için update ve delete işlemi tavsiye edilmemektedir. Doğru olmayan birleştirmelerde istenmeyen sonuçlara neden olabilir.

Parametreler

Array ...$columns Birleştirilecek tablolar. Sıralı dizi parametresi kabul eder. Birden fazla join için parametreler çoğaltılabilir.
Return This

Kullanımlar

echo DBGrid::columns('test.name as Name', 'test2.address as Address')
           ->joins(['test2.user_id', 'test.id', 'left'])
           ->create('test');

 

 

# Exclude (ZN >= 5.4.0)


Datagrid üzerinde güncelleme ve ekleme işlemi yapılması istenmeyen kolonları belirtmek için kullanılır.

Parametreler

Strings ...$columns Gösterilmek istenmeyen kolonlar.
Return This

Kullanımı

echo DBGrid::exclude('date', 'image')
        ->hide('addButton')
        ->inputs(['category_id' => function($form, $name, $value)
        { 
            return $form->table('gallery_categories')->select($name, ['id' => 'name'], $value);
        }])
        ->columns('id as ID', 'category_id as CategoryID', 'image as Image', 'date as Date')
        ->limit(10)
        ->create('images');

 

 

# Hide (ZN >= 5.4.0)


Datagrid üzerinde gösterilmek istenmeyen nesneleri gizlemek için kullanılır.

Parametreler

Strings ...$objects Gösterilmek istenmeyen nesneler.
Return This

Kullanımı

echo DBGrid::exclude('date', 'image')
        ->hide('addButton')
        ->inputs(['category_id' => function($form, $name, $value)
        { 
            return $form->table('gallery_categories')->select($name, ['id' => 'name'], $value);
        }])
        ->columns('id as ID', 'category_id as CategoryID', 'image as Image', 'date as Date')
        ->limit(10)
        ->create('images');

 

 

# Inputs (ZN >= 5.4.0)


Datagrid edit ve add menüsünde yer alan inputları değiştirmek için kullanılır. Parametre olarak dizi kabul eder. Dizi anahtarları input'u değişecek kolon adını içermelidir.

Parametreler

Array $inputs Değiştirilecek kolon ve girdi nesneleri.
Return This

Kullanımı

echo DBGrid::exclude('date', 'image')
        ->hide('addButton')
        ->inputs(['category_id' => function($form, $name, $value)
        { 
            return $form->table('gallery_categories')->select($name, ['id' => 'name'], $value);
        }])
        ->columns('id as ID', 'category_id as CategoryID', 'image as Image', 'date as Date')
        ->limit(10)
        ->create('images');

Geri Çağrım İşlevi

Bu fonksiyon 3 parametre kabul eder.

Parametreler

Form $form Form sınıfı nesnesi.
String $name Varsayılan input name değeri.
String $value Varsayılan input value değeri.

Kullanımı

->inputs
([
    'gender' => function($form, $name, $value)
    {
        return $form->select($name, [1 => 'male', 2 => 'female'], $value);
    }
])

 

 

# Outputs (ZN >= 5.4.1)


Veri tablosunun kolon görünümlerini biçimlendirmek için kullanılır. 

Parametreler

Array $outputs Değiştirilecek kolon görünümü.
Return This

Kullanımı

echo DBGrid::exclude('date', 'image')
        ->hide('addButton')
        ->inputs(['category_id' => function($form, $name, $value)
        { 
            return $form->table('gallery_categories')->select($name, ['id' => 'name'], $value);
        }])
        ->outputs
        ([
            'category_id' => function($html, $value)
            { 
                return $this->category = DB::select('name')->where('id', $value)
                                            ->get('gallery_categories')
                                            ->value();
            },
            'image' => function($html, $value)
            { 
                return $html->image(UPLOADS_DIR . $this->category.'/' . $value, 50, 50);
            }
        ])
        ->columns('id as ID', 'category_id as CategoryID', 'image as Image', 'date as Date')
        ->limit(5)
        ->create('images');

Geri Çağrım İşlevi

Bu fonksiyon 2 parametre kabul eder.

Parametreler

Html $html Html sınıfı nesnesi.
String $value Varsayılan kolon değeri.
Object $row Belirtilen satıra ait değerler. Kullanımı DB::row() gibidir.

Kullanımı

->outputs
([
    'category_id' => function($html, $value, $row)
    { 
        return DB::select('name')
                  ->where('id', $row->category_id)
                  ->get('gallery_categories')
                  ->value();
    }
])

 

 

# Add (ZN >= 5.4.1)


Datagrid'in üst orta bölümdeki kısmına nesne eklemek için kullanabilirsiniz.

Parametreler

Strings $ojects Eklenecek nesneler.
Return This

Kullanımı

echo DBGrid::hide('addButton')
     ->add(Form::class('btn btn-danger')->button('btn', 'Button'))
     ->columns('id as ID', 'email as Email', 'name as Name', 'role_id as Role', 'date as Date')
     ->create('users');