Doctrine – Form->setValues()?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
exquis
Člen | 83
+
0
-

Ahoj,

začínám s Doctrine a nedaří se mi jednoduché načtení hodnot do formuláře dle klasického setValues()

$form->setValues($this->EM->getRepository(Langs::class)->findOneById($this->detailId));

Když bych nastavil viditelnost atributů entity na public, tak to lze přetypovat na array a funguje, ale to nebude ta nejlepší cesta :) Nápad jak to jednoduše načíst?

leninzprahy
Člen | 150
+
0
-

Asi nejjednodušší, ale rozhodně ne nejčistější cesta je, si v té entitě udělat metodu, něco jako

public function getFormDefaults() {
	return [
		'neco' => $this->neco,
		....
	];
}

a pak to plnit

	$form->setValues($this->EM->getRepository(Langs::class)->findOneById($this->detailId)->getFormDefaults());
exquis
Člen | 83
+
0
-

Dobrý nápad, mě se právě nechtělo dělat každé entitě něco jako [„foo“ =>„bar“], ale chtěl jsem, aby to vzalo všechny atributy tridy a hodilo je to do assoc. pole a na to jsem objevil super funkci.. takze stacilo si udelat BaseEntity, ktera ma v sobe funkci getValues() a ostatni jsou potomci

function getValues()
   {
       return get_object_vars($this);
   }
leninzprahy
Člen | 150
+
0
-

Jako jde to, třeba na prototypování se může hodit, ale čisté to není :)
A to máš všechny formuláře a entity 1:1, jako že všechny vlastnosti entit, mají své políčko ve formuláři?

Ještě bych se koukl po nějaké knihovně, třeba
https://github.com/…rms-doctrine
https://github.com/…octrineForms