Ebben a bejegyzésemben az előző bejegyzésemben bemutatott form beágyazási technika alapján készített plugint tenném közzé.

A plugin célja, hogy egyszerűsítsen a symfony beágyazási technikáján. Az egyszerűsítés viszont nem minden esetben jobb. Tehát ott érdemes használni, ahol nem visszük túlzásba a beágyazást. :-) Ha túlságosan egyedi formára kívánjuk hozni, akkor előfordulhat hogy rengeteg módosítás helyett, célszerűbb teljesen tiszta lapról indulni. Akkor pedig az előző bejegyzésem nagyobb segítség, mint ez a plugin.
A plugin használatának nagyon fontos feltétele, hogy a kapcsolt táblák 1:N kapcsolatban legyenek az adatbázis szerint is. Tehát a beágyazandó táblában legyen meg az idegen kulcs!

Hozzávalók:
A plugin itt található
sfJqueryReloadedPlugin
CakePHP set osztálya, a symfonysított verziót ide tettem fel.

A plugin telepítése:

  1. Miután létrehoztuk a projektünket, a plugin könyvtárba csomagoljuk ki plugint
  2. Engedélyezzük a az apps/config/settings.yml fájlban:

    all:
      enabled_modules:        [default, tlsysEmbedderHelper, stb]
    

    Erre azért van szükség, mert az ajaxos hívást kiszolgáló action a pluginba került. Így azt sem kell állandóan újra és újra megírni.

  3. A lib/form/BaseFormPropel.class.php származtatása a pluginnban talalhato tlsysEmbedderFormból

    abstract class BaseFormPropel extends tlsysEmbedderForm
    
  4. A szükséges formokkban értéket kell adni a $tlsysEmbeddedForms protected változónak. Egy példa az előző bejegyzésemben található OsztalyFormra.

    class OsztalyForm extends BaseOsztalyForm
    {
      # meg kell adni a beágyazni szándékozott osztály nevét, egyes és többesszámban
      # a többesszám az, ahogy a propel hivatkozik rá
      protected $tlsysEmbeddedForms = array(array('singular'=>'Tanulo', 'plural'=>'Tanulos'));
      public function configure()
      {
      }
    }
    

Ezzel a 4 lépéssel ugyanazt értük el, mint az előző bejegyzésemben található litániával.

A bemutató alkalmazás innen tölthető le