Používání služby v jiné službě

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

Začínám s Nette a potřeboval bych v jedné službě používat jinou službu. Vytvořil jsem si repozitáře pro každou tabulku, kterou mám v databázi, tak jak to je v quickstartu. Potřebuji vybrat něco z jedné tabulky a na základě toho vybrat něco dalšího z jiné tabulky a pak to celé vrátit presenteru.
Abych to trochu upřesnil, mám jednu tabulku seznamů a druhou tabulku, kde jsou položky jednotlivých seznamů. Nejprve potřebuji vybrat některé seznamy, a pak k nim položky a to celé chci vrátit presenteru.
Nevím ale jak správně použít repozitář pro tabulku položek seznamů v tom, který pracuje s tabulkou seznamů. Přes $this->context mi to nefunguje a vytvářet novou instanci objektu, který pracuje s položkami seznamů se mi nezdá správné.

David Matějka
Moderator | 6445
+
0
-

nejlepsi bude vytvorit si fasadu – ta bude vyzadovat zavislosti na obou repositories a presenter nebude pristupovat k repo, ale k facade

class ItemsFacade extends Nette\Object
{
	protected $listRepository;
	protected $itemRepository;

	public function __construct(ListRepository $listRepository, ItemRepository $itemRepository)
	{
		$this->listRepository = $listRepository;
		$this->itemRepository = $itemRepository;
	}

	public function getListsWithItems()
	{
		....
	}
}

v configu registrujes facadu jako sluzbu, nette se postara o autowiring (dej pozor na namespace) a v presenteru si injectnes facadu

libik
Člen | 96
+
0
-

Premyslim ted nad necim podobnym – nad strukturou presenteru a modelu.

Mam tabulky pages,documents a files.
Existuje tedy 1:N zavislost pages<>documents<>files.
Pri editaci polozky z pages edituju text z pages a nacitam prislusne polozky z documents. Kazda polozka v documents muze mit nekolik polozek z files.

Editaci stranky resim klasicky pres PagesPresenter:edit + sablona + model.

  • PagesPresenter ma tedy obsahovat tovarnicky pro editaci documents a files (s injectovanymi modely pro documents a files)?
  • nebo mam vsechno z tabulek joinovat v prislusne metode v pages modelu (napr. getPageDocuments, getDocumentFiles…)?
  • a nebo mam vytvorit DocumentsPresenter a FilesPresenter a resit to pres ne ?

Editaci provadim v tabech do nichz ajaxove nacitam sablony (v tuto chvili patrici PagesPresenteru) a v PagesPresenteru mam vsechny tovarnicky na formulare.

Editoval libik (11. 7. 2013 11:11)