Zastavení callbacků onSuccess po zavolání $form->addError()
- joe
- Člen | 313
Ahoj,
mám komponentu s formulářem, který má nastavený
onSuccess
, takto
$form = $this->formFactory->create();
$form->add...
$form->onSuccess[] = [$this, 'success'];
public function success(Form $form, $values) {
echo "success 1";
}
Po odeslání se vypíše „success 1“, pokud ale přidám více
callbacků a v tom prvním zavolám $form->addError(...)
, tak
už se druhý callback neprovede, ale čekal bych že se zavolají všechny
callbacky. Je to záměr?
$form = $this->formFactory->create();
$form->add...
$form->onSuccess[] = [$this, 'success'];
$form->onSuccess[] = [$this, 'success2'];
public function success(Form $form, $values) {
echo "success 1";
$form->addError("Chyba");
}
public function success2(Form $form, $values) {
echo "success 2";
}
(Je to zjednodušený příklad, v praktickém použití mám
„přihlašovací formulář“ (jedna komponenta), kterou obaluje druhá
komponenta „přihlašování“, ze které jsem právě chtěl nastavit
další onSuccess
formuláři.)
Možná mi to už dává smysl, jen jsem bral onSuccess
jako
úspěšné odeslání formuláře a tím, že přidám chybu, jsem nečekal,
že se z něj stane neúspěšně odeslaný.
Editoval joe (5. 11. 2017 21:06)
- David Matějka
- Moderator | 6445
jj, je to zamer. deje se tak od verze 2.3 https://github.com/…765d41428eb0
- joe
- Člen | 313
Díky, ale popravdě mě to trochu mate. Mám dvě (může být i více)
komponent, jedna z nich je na formulář, kde je definován
onSuccess
. A v další obalovací komponentně jsem chtěl
další onSuccess
formuláři nastavit, ale neprovedl se mi,
i když se formulář „úspěšně“ odeslal. Takže nejspíš je řešení
použít onSubmit
:-)
- David Matějka
- Moderator | 6445
a co v tom druhem onSuccess delas? formular jiz neni validni, takze by to preci mohlo zpusobit problemy, ze pocitas s tim, ze validni je..
- joe
- Člen | 313
Napíšu jak to přesně mám.
Komponentu Form
vytvářím v komponentě
SignInForm
, kde nastavuji onSuccess
formuláři a
provádím přihlášení. Při chybě se volá
$form->addError(...)
.
V komponentě SignIn
vytvářím instanci SignInForm
a chtěl jsem nastavit událost onSuccess
formuláři, že
v případě AJAXu se překreslí komponenta. A pak už jsem jenom hledal,
proč se mi nepřekresluje :-)