Doctrine 2 + formulár – setDefaults

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
JakubJarabica
Gold Partner | 184
+
0
-

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!

Jan Endel
Člen | 1016
+
0
-

Osobně toto řeším právě přes ty @column.

Filip Procházka
Moderator | 4668
+
0
-

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
+
0
-

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.

Honza Marek
Člen | 1664
+
0
-

O něco takového jsem se pokoušel tady. Neřikám, že je to dokonalé…