Formulář – dvě šablony – invaliduje se nesprávná šablona
- Jiří Nápravník
- Člen | 710
Používám formuláře v UI control jako zde . Mámn však formulář, který má dvě šablony a když chci použít toto:
{control tagForm:second}
a následně formulář odešlu a v onSuccess jej invaliduji. Tak se mi vrátí jako snippet, defaultní render() a ne renderSecond.
Jak se to řeší?
- honos
- Člen | 109
EDIT: Sorry, to ti asi nepomuze. Vim ze se tu neco podobneho jiz reseilo a co jsem si z toho odnesl bylo ze se invalidace snippetu ma provadet ne v render<Sub> ale v hlavni render mettode. zkus projit forum..
Editoval honos (9. 1. 2014 12:28)
- Jiří Nápravník
- Člen | 710
Díky za reakci, já pohledával trochu více a našel, jsem, že tohle jak chci já snad ani nejde při využití ajaxu (logicky mi to dává smysl). A je prý tedy řešením nakonfigurovat si tu komponentu zvenku
- akadlec
- Člen | 1326
Hele taky jsem to řešil a musel sem to upravit tak že v klasické render metodě si udělám detekci co to je za akci a podle toho nastavím soubor s šablonou. Nějak takto:
class Avatar extends \System\Application\UI\Control
{
/**
* Render component
*
* @param string $template
*/
public function render($template = NULL)
{
//...
//...
// Detect template by presenter & module
if ( !$template ) {
// Render with default template
$template = self::TEMPLATE_DEFAULT;
// Person module
if ( $this->presenter->subModuleName == 'Person' ) {
if ( $this->presenter->presenterName == 'Profile' ) {
$template = self::TEMPLATE_PERSON_PROFILE;
} else if ( $this->presenter->presenterName == 'Settings' ) {
$template = self::TEMPLATE_PERSON_SETTINGS;
}
}
}
return !$template ? :$this->renderWithTemplate($this->__toString() . DS . $template);
}
public function renderAccountSettings()
{
$this->render(self::TEMPLATE_DEFAULT);
}
}
metoda renderWithTemplate je v abstraktní třídě a zajistí aby se použila šablona ze správného tématu.
- Jan Suchánek
- Člen | 404
A nemohl by tu detekci znastavivat primo signal formu? Odeslu form a v signalu mu doplnim jake view ma pouzit a v render uz jen doplnim do sablony.
- Jan Suchánek
- Člen | 404
Fuj, zadny url, primo metoda ktera zpracovava odeslani by nastavila privatni view. A v rendereru by bylo jen predano.
- Jan Suchánek
- Člen | 404
akadlec: Pokud mám víc rendererů pro jeden form, co předat přímo setrem typ view a už pak nic neřešit? Tedyk nepoužívat {control tagForm:second} ale jen {control tagForm} a že je second mu předat přímo při výrobě?
- Jiří Nápravník
- Člen | 710
@akadles díky za návrh řešení, ale nakonecj sem zvolil tu možnost už při výrobě nastavit šablonu, podobně jako zmiňuje jenicek
- Jan Suchánek
- Člen | 404
@Honos:ono ja moc „nechapu“ vyhodu toho ze to zapomene to view ale vlastne ani vyhodu vice stejnych formu s jinym rendererem kdyz ten form resime dnes prez autowiring v neonu tak napsat jinou tovarnu v presenteru uz je sranda ne?
- akadlec
- Člen | 1326
@jenicek: takže podle tebe je lepší mastit x komponent co jsou stejné a jen se liší šablonou? To není moc ok. Form s různýma šablonama a nebo samotná komponenta s vícero šablonama není problém. Třeba já to mám u editace avatara. Na stránce profilu to chci editovat jedním způsobe a na stránce editace účtu taky jinak a proč bych na to měl psát dvě komponenty když to dělá to samé jen to jinak vypadá?
- Jan Suchánek
- Člen | 404
@akadlec: netvrdim ze se mi to libi. Smeruje to i pri kazdym handle na zakladni render. Jen me napadlo mit pro kpmponentu, ktera je stejna jen pokazde jinou tovarnicku primo v presenteru a tam setnout jakou chci mit sablonu. K cemu je pak ten odlisny renderer?
- Jiří Nápravník
- Člen | 710
@akadlec: já myslím, že jsou na mysli ne komponenty, ale továrničky na komponenty. Prostě si udělá vždy továrničku, které nastaví každé přes setter jiný view
- honos
- Člen | 109
jenicek napsal(a):
@Honos ja moc „nechapu“ vyhodu toho ze to zapomene to view ale vlastne ani vyhodu vice stejnych formu s jinym rendererem kdyz ten form resime dnes prez autowiring v neonu tak napsat jinou tovarnu v presenteru uz je sranda ne?
Čeče, mně osobně přijde dost ‚prasacke‘ si vytvářet NEON config se 150 řádky kodu a mít xxx komponent jak psal @akadlec Následná úprava může zasáhnout více souboru a mně osobně to připomíná vrásky na jinak růžovém zadečku.. :)
- honos
- Člen | 109
Jiří Nápravník napsal(a):
@akadlec: já myslím, že jsou na mysli ne komponenty, ale továrničky na komponenty. Prostě si udělá vždy továrničku, které nastaví každé přes setter jiný view
No to jo ale.. Neřešil jsi tady: Formulář – dvě šablony –
invaliduje se nesprávná šablona ??
Takže otázkou je, zda to funguje na způsob který nastínil
@Jiří Nápravník? Pořad nemám přistup ke svému
počítači tak si to nemůžu ověřit ale odpověď ně zajímá.. :)
EDIT: Po chvilce namáháni zrezavělých zezelenalých mozkových zavitu předpokládám že ANO
Editoval honos (15. 1. 2014 18:36)