Komponenty s více nastaveními – do komponenty nebo továrničky?

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

Četl jsem článek, jak nejlépe a formuláře a líbí se mi ta metoda s tím UI/Control + generovanou továrničkou.

A teď jsem přemýšlel, jestli není správné takhle řešit i komponentu, která má spoustu různých nastavení. Typicky třeba grid, kde se přidává x sloupců, filtry atd. Zatím to dělám, že to mám v presenteru v továrničce, ale nebylo by taky proto správnější zvolit podobný postup a udělat to celé jako komponentu. Presenter by pak nebyl tak velká třída. Nebo je lepší to něchat v presenteru?

Editoval Jiří Nápravník (29. 11. 2013 20:07)

Jan Suchánek
Člen | 404
+
0
-

@Jiří Nápravník: Myslíš dát gridu (komponentě) závislosti a předat ho presenterům pomocí továrničky a případně si upravit funkčnost v konkrétním action? To je stejné jako s formuláři ne?

Jiří Nápravník
Člen | 710
+
0
-

Myslím v podstatě tohle Jen si tam místo formuláře představ, že tam takhle nadefinuju a naplním celý grid. A presenteru předám tu generovanou továrničku a v presenteru bych dal pak pouze něco jako:

protected function createComponentGrid(){
	return $this->gridFactory->create();
}
enumag
Člen | 2118
+
0
-

@Jiří Nápravník: Imho je to dobrý způsob.

Jan Suchánek
Člen | 404
+
0
-

@Jiří Nápravník: a pokud budeš chtít třeba gridu předat nějaký parametr (myslim z jiné komponenty, z parametrů presenteru, např.: id nějaké kategorie) tak přez setr gridu a kde je to rozumné jen v action a handle?

Editoval jenicek (29. 11. 2013 22:51)

Jiří Nápravník
Člen | 710
+
0
-

@jenicek stejně jako u formulářu, v action vytáhnu hodím do privátní property presenteru a továrničce v create() to předám

Jan Suchánek
Člen | 404
+
0
-

@Jiří Nápravník: tzn. předávaš až v create ok a případně privátní propery presenteru měníš v handle?

Proč se ptám, mám grid, vlastní. A chtěl bych při používání Ajaxu měnit renderer. Dělám dobře když ho měním pomocí signálu handle. Když použiju zvláštní action, při odesílání formu ajaxem jsem se nevracel na správný view a neodesílali se data (form se zpropaguje až v šabloně ne?).

Budu konkrétnější, pro názornost:

  1. mám view s nějakým vlastním gridem
  2. kliknu na link „upravit“, třeba nějaký článek → nepodstatné

(dotaz je proveden ajaxem a nedochází k přechodu na jinou stránku)
3. v snipetech vrátím pro zobrazení pouze formulář (ajaxem form ukládám)
4. při chybě invaliduji jen formulářový snipet, při uložení formulářový snipet odstraním a invaliduji grid.

Měl bych tedy mít možnost ho zpracovat, ale zpracuje se jen když je v šabloně uveden).

Chápu, mohu použít jiný hotový grid, ale tam se takové blbosti neřeší a většinou dochází k přesměrováním.
A formulář v modálu to jsem moc nikde nevidel jen, když jsem si něco napsal sám.

Formulář v modálu mi přijde vynikající řešní jen drobných malých a dorobných změn (například k editaci kategorií).

Ale možná píšu blbosti.

Editoval jenicek (30. 11. 2013 12:51)

Jiří Nápravník
Člen | 710
+
0
-

Nevím, tohle je hlavně trochu více off-topic, než na co jsem se ptal:-)

Já používám hotový grid, na handle dávám většinou jen mazání, a to mi pošle upravený grid jako snippet. Úpravu řeším v novém view bez ajaxu.

Oli
Člen | 1215
+
0
-

OT:
Jenicek: niftygrid ma inline editace, to by mohlo byt to co chces. Je to zajaxovano a kazdou polozku ve sloupci edituies jako text, select nebo boolean.