presenter → Form a DI how to

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

Zdravim,
ked si v prezentry vytvorim tovarnicku na Form a v tom formulary budem mat nieco ako:

<?php
//$items = $this->presenter->context-> // toto porusuje DI
$this->addSelect('select', 'Select', $items);
?>

odkial mam zobrat tie $items?

dakujem.

Jan Tvrdík
Nette guru | 2595
+
0
-

Předávej závislosti do kostruktoru formuláře resp. továrničky na formulář.

David Ďurika
Člen | 328
+
0
-
  • a co ak tych zavislosti mam viac? (myslim naozaj vela)
  • a co ak mam v roznych situaciach ine zavislosti?
  • ako mam dostat zavislosti to metody kt. spracovava odoslane udaje ?
Filip Procházka
Moderator | 4668
+
0
-

achtan napsal(a):

  • a co ak tych zavislosti mam viac? (myslim naozaj vela)

5 je ještě únosné, cokoliv více je chyba návrhu.

Služby se dají skládat do sebe. Místo tří služeb vytvoř novou třídu, které je obalí a bude mít část logiky v sobě. Takto v konečném důsledku můžeš logiku rozčlenit a roztřídit a poskládat do sebe jako lego. Vznikne ti pak z toho krásný graf závislostí.

  • a co ak mam v roznych situaciach ine zavislosti?

To je při dobrém návrhu nepravděpodobné. Ale pokud ano, tak bys neměl mít jednu třídu, která má různé závislosti podle nějaké podmínky, ale dvě různé třídy, kde každá bude vyžadovat pouze co potřebuje a na základě nějaké rozhodovací logiky vytvářet buď jednu nebo druhou. Od toho jsou taky interfacy.

  • ako mam dostat zavislosti to metody kt. spracovava odoslane udaje ?

Předáš si je konstruktore, nebo inject metodou a pak je v ní použiješ.