Používání služby v jiné službě
- yfang
- Člen | 1
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
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
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)