- Aplikace
- Databáze
- Šablony
- Formuláře
- Knihovny
- Návody
CrudController
Pomocí toho již předem vytvořeného controlleru můžete velmi rychle a efektivně vytvořit vlastní administrační rozhraní pro jakoukoliv tabulku. Stačí jednoduše svůj controller zdědit od CrudControlleru. Samotný CrudController dědí od AppControlleru, takže nepřijdete o svoji předdefinovanou init metodu.
Povinně musíte nastavit dvě členské proměnné:
- $table – databázová tabulky, nad kterou se vytvoří CRUD
- $link – maska odkazu, pro daný CRUD controlelr
class PagesController extends CrudController
{
protected $table = "pages";
protected $link = "/admin/pages/<:action>";
}
Jak vidíte, do $link musíte uvést odkaz ve tvaru routy. Tedy
na místo metody vložit proměnnou <:action>. V tuto
chvíli už stačí se podívat na adresit /admin/pages/index a uvidíte tabulku
vašich db záznamů, které můžete jednoduše upravovat a přidávat.
Výběr sloupců pro datagrid
Samozřejmě se může stát, že některé sloupce, které jsou zobrazeny na
indexu v Datagridu nechcete zobrazovat. Toto chování
jednoduše změníte pomocí proměnné $columns.
protected $columns = array('id', 'url', 'title', 'updated');
Výběr sloupců pro editaci
Stejně tak se může hodit možný výběr sloupců, které jsou přes administraci upravit.
protected $editColumns = array('url', 'title');
I kdyby jste do $editColumns zadali název sloupce
s primárním klíčem, tak jej stejně nebudete moci upravit!
Pojmenování sloupců
Názvy sloupců jsou často velmi uživatelsky nepřívětivé a také většinou v angličtině. CrudController Vám nabízí možnost jim nastavit vlastní popisky.
protected $labels = array(
'url' => 'Url',
'title' => 'Název stránky',
'submit' => 'Uložit' # tlačítko pro uložení má vždy název submit
);
Filtry pro ukládání
Často se stane, že chceme při ukládání hodnotu sloupce nastavovat
automaticky. Pak pomocí $editColumns editace zrušíme a pomocí
metody processData($data) ukládaná data upravíme.
protected function processData($data)
{
$data['updated%r'] = 'NOW()';
return $data;
}
Úprava formuláře
protected function getForm($table)
{
# pridame resetovaci tlacitko
$form = parent::getForm($table);
$form->addReset();
return $form;
}
