Použití modal oken a předávání hodnot

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

Dobrý den,
vytvářím aplikaci pro evidenci skladu.

Mám tedy presentery pro sklad, dodavatele, příjmy zboží, výdeje zboží. Vše samostatně funguje v pořádku. Teď bych ale pro zjednodušení práce stím, potřeboval aplikaci udělat ajaxovou.

Nevím si však ani teoreticky rady, jak toho dosáhnout.

Například, chci přidat nové zásoby. Otevřu si tedy příjem zboží Receipt:add.
Nabídne se mi formulář, kde vyplním datum a ze selectu vyberu dodavatele. Ale co když zde tento dodavatel ještě není. Tak vedle toho budu mít tlačítko Přidat dodavatele. Po kliknutí se otevře modal okno v kterém bude formulář z Vendor:add. Po submitu, když nedojde k chybě, bych potřeboval modal okno zavřít a provést aktualizaci toho selectboxu, nejlépe s již vybranou nově přidanou položkou.

Potřeboval bych to ale dosti univerzální, protože se bude tento postup na stránkách používat dost často.

Hned pod dodavatelem, se nadefinuje seznam zboží. Takže zde bude tlačítko přidat zboží Stock:default. Které otevře modal s datagridem všech položek, které se budou také ajaxově filtrovat. Pokud se jedná však o novou položku která v db ještě není, bude se muset přidat. Takže zde máme další tlačítko Vytvořit novou položku Stock:add, které otevře další modal okno nad datagridem, kde se nadefinuje nová položka, zde však bude potřeba definovat nového výrobce Brand:add, další modal.
Po přidání výrobce se aktualizuje select výrobců u přidání položky. Po uložení položky se aktualizuje datagrid kde bude tato položka již vybrána. Po vybrání položky se v příjmu zboží zobrazí název, aby bylo možné definovat cenu a počet kusů. Těchto položek zde bude více, takže bude použit replicator.

Momentálně mám vyřešeno pouze načítání jiného presenteru a akce do modal okna. Cílový presenter, tím že je volán ajaxově, tak invaliduji potřebný formulář a pošlu snippetem. V původním okně pomocí javascriptu beru automaticky první vrácený snippet a ten vložím do modal okna a provedu nette.initForm(this) aby mi fungovala validace. Tím jsem však skončil… ani nevím jak tento formulář ajaxově odeslat, aby mi pak nedošlo k přesměrování na jiný presenter.

Potřeboval bych alespoň nějak teoreticky nakopnout jakou cestou se dát. Jestli cestou snippetů (jak vyřešit vracení hodnot z modalu do rodičovského modalu a následně do původní stránky?), sessions, nějakého js frameworku, nebo nato jdu úplně špatně?

Za jakoukoliv radu děkuji.

Zax
Člen | 370
+
0
-

Konkrétně asi moc nepomůžu, ale myslím, že presentery stačit nebudou, využil bych na to komponenty, které jsou znovupoužitelné a dají se libovolně skládat do sebe, a eventy pro konkrétní situace (překreslení konkrétních snippetů).

Příklad: Na přidání zásob bych si udělal komponentu addReceiptControl, která v sobě bude mít továrnu na komponentu pro přidání dodavatele (addVendorControl) a na addVendorControl bych si navěsil event, který po přidání dodavatele překreslí konkrétní snippet v addReceiptControl.

Návodů na komponenty je tu celá řada, silně doporučuji je dostat „pod kůži“ ;-)

jEhLa
Člen | 70
+
0
-

Mno, proto jsem psal sem. Sice mám všechny formuláře zabaleny v komponentách, ale toto mě prostě nenapadlo :-D Jen bude sranda s předáváním všech těch závislostí.

Děkuji