Doctrine 2 + formulár – setDefaults
- JakubJarabica
- Gold Partner | 184
Zdravím, pre potreby bakalárky sa po dlhšom čase hrám s Doctrine 2. Ako najrozumnejšie implementovať setDefaults? Potrebujem z entity vyrobiť asociatívne pole a rád by som obišiel v servisnej vrstve vytváraniu DQL a hydratácii výsledku. Tiež ma ešte napadlo mať v BaseEntity metódu toArray, ktorá by reflexiou vytiahla atribúty s anotáciou @column, ale to mi tiež príde dosť ako znásilňovanie. Aké riešenie je podľa Vás najčistejšie a najjednoduchšie? Vďaka!
- Filip Procházka
- Moderator | 4668
Třída EntityFormMapper
, která bude pomocí
ClassMetadata
(tam jsou uloženy ty vaše annotace a ještě mnohem
víc) převádět entitu na pole :)
$mapper = new EntityFormMapper($em->getClassMetadata(get_class($entity)));
// načítání z entity
$form->setDefaults($mapper->save($entity));
// ukládání do entity
$mapper->load($entity, $form->values);
Měl jsem něco rozepsaného, ale ukázalo se to jako příliš složité. Budu to psát znovu, ale tentokrát se pokusím jednoduše :) Nejspíš ještě dnes.
Editoval HosipLan (3. 4. 2011 12:12)
- JakubJarabica
- Gold Partner | 184
Ono úplne ideálny stav by zrejme bolo extendnúť AppForm a pridať mu metódu bindEntity, ktorá by sa jednak starala o setDefaults a na základe anotácií by vedela aj definovať validačné pravidlá(a vlastne by mohla robiť aj insert a update, hm). Počkám teda, či sa niečo objaví v Kdyby, zatiaľ si vystačím s manuálnym nastavovaním, nakoľko sa jedná o málopoložkové entity.