CodeIgniter | Rapyd - CRUD rychle a efektivně

Dnes volně navážu na článek o frameworku CodeIgniter (CI). Jak již bylo řečeno v minulém článku. Je CI efektivní pro většinu aplikací. Vývoj aplikace je rychlý a bezproblémový. Jestliže chcete zrychlit vývoj ještě o dalších 100% doporučuji knihovny pro vytváření a práci s formuláři.

CI obsahuje podporu pro scaffolding, ale v případě, že potřebujete vytvářet administraci a její uživatelské rozhraní narazíte jen na slabou podporu, vše si musíte připravit sami. Ti, kteří nechtějí tuto otravnou činnost pokaždé řešit znova, použijí jistě rádi knihovny, které psaní administrací, jejich formulářů pro vkládání a mazání dat, velice usnadňují.

Rapyd používá komponenty CI pro vytváření formulářů, ale doplňuje jejich automatickou a poloautomatickou tvorbu. Naleznete podporu pro AJAX, mezinárodní nastavení a překlady, pokročilou validaci formulářů, funci UNDO a mnoho dalších.

Dále jsou vám k dispozici pokročilé komponenty jako jsou různé DataGrid prvky, vyhledávání a řazení ve výstupech, včetně nativní podpory stránkování. Všechny komponenty jsou snadno nastavitelné a vytvořit pokročilou správu záznamů v administraci aplikace, je opravdu lahůdkou.

Princip práce s Rapyd spočívá ve vytvoření controleru, v něm se definuje konfigurace formuláře, názvy prvků a jejich typ. Vše se doplní o popis validačních hlášení a definici, jaká pole je nutné vyplnit, jak se má s obsahem polí naložit, jestli se má zkontrolovat, případně před uložením nějak zpracovat. Pokud potřebujete speciální výstupy v datagridu, dodefinují se funkce, které obsah záznamu nějak zpracují, například převedou cestu k obrázku na prvek <img> který se následně zobrazí apod..
Konfigurace se napojí na konkrétní tabulku v DB a Rapyd se postará o vše potřebné. Automaticky vytvoří formuláře pro vkládání a editaci, prvky pro smazání a náhled, včetně UNDO. Pokud máte zapnutu vícejazyčnou podporu lze pouhým přidáním identifikace jazyka do url volání controlleru zajistit kompletní překlad rozhraní.

Rapyd obsahuje ve své základní konfiguraci 6 světových jazyků, což je pro většinu aplikací dostačující. Čeština samozřejmě chybí, ale překlad vytvoříte velice jednoduše. Všechny komponenty využívají oddělený vizuální styl, lze je tedy graficky upravit podle vlastních představ. Většině z Vás pravděpodobně nebude standardní téma, nijak naobtíž, není sice žádné extra krásné a graficky vyladěné, ale je rychlé a funkční. Osobně výstupy šablon generuji do nějaké konkrétní šablony na konkrétní místo a mám tedy grafiku rozhraní definovanou jinak. U komponent Rapyd pouze dodefinovávám velikost písma, případně barvy.

Rapyd má vlastní dokumentaci, která je přehledná a popisuje všechny možné prvky a jejich reálné použití. Vše je doplněno o set ukázkových příkladů. Aktuálně je Rapyd ve verzi 0.98 a je bundlován s CodeIgniter v. 1.54. Dnes je již k dispozici CI 1.61, takže pokud chcete používat rapyd v novější verzi CI, stačí překopírovat Rapyd konfigurace a knihovny ze straší do novější verze, samozřejmě na adekvátní místo.

Nic není ideální

Zatím asi máte pocit, že je vše kolem CI a Rapyd naprosto ideální, ale bohužel není tomu tak. Občas se stane, že hledáte proč Vám něco nefunguje, když by mělo a vše jste udělali správně a podle návodu. Většinou se nejedná o nijak zásadní problém, ale pozlobí to.

Zásadní chyba o které se chci zmínit, se projevuje při uploadu obrázků. Problém vznikne pokud potřebujete pomocí jednoho formuláře nahrát na server více obrázků najednou. V případě že tedy vytvoříte dvě uploadovací komponenty, vyberete dva obrázky a dáte odeslat, CI a Rapyd nejsou schopny rozeznat jednotlivé komponenty a dochází k problémům, kdy se nahraje pouze jeden obrázek.
Vše lze obejít tím, že obrázky uploadujete zvlášť a ne v rámci jediného formu.

Další problémy na které jsem narazil se týkaly cookies a ssession. V jeden okamžik se mi stávalo, že jsem nebyl schopen zjišťovat a měnit jejich hodnoty. Ani po revizi kódu jsem nenašel příčinu. Řešení bylo jednoduché a spočívalo v použití klasického přístupu ke cookies a ssession pomocí nativních funkci PHP místo modulů pro Sessions s Cookies dodávaného v CI a Rapydu.

Pravděpodobně narazíte na další specifické problémy, ktré se projeví ve specifických podmínkách, ale většinou se jedná o kosmetické vady a nic kritického.

Závěr

Přestože CI a Rapyd obsahují občas nějakou tu chybku, doporučuji oba produkty. Vývoj je velice rychlý.
Pokud doplníte CI o další moduly, které řeší specifický problém, budou vám aplikace doslova růst pod rukama. CI i Rapyd mají poměrně slušnou základnu uživatelů a podpory na fórech nebo vývojářských wiki. Pokud tedy narazíte na komplikace, je pravděpodobné, že se s něčím podobným už někdo setkal a nabízí řešení, které pro Vás bude přijatelné.

  • Facebook
  • Twitter
  • Dribbble
Michal Hotovec
"Přibližně 10 let se pohybuji v oblasti grafiky, webu a videa. Vizuální tvorba je mojí prací a zároveň koníčkem. Baví mne pracovat s lidmi kteří něco umí. S lidmi, kteří umí používat mozek, protože jinak je to strašlivá nuda."