Negace regularniho vyrazu v textArea pattern
- Duchy
- Člen | 7
Tak zkoušim si udělat vlastní. Tedy vytvořím si funkci (nikoli metodu) ve stejnem presenteru jako formulář. Poté když zavolám:
function testForEmail($item, $arg)
{
return preg_match('/.*@.*\..*/', $item);
}
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
.
->addRule('testForEmail', 'Please remove any email from description..');
.
}
Dostávám „Unknown validator ‚testForEmail‘ for control ‚inputTextArea‘.“
- jiri.pudil
- Nette Blogger | 1028
Nejspíš tu funkci definuješ v nějakém jmenném prostoru (tj. na
začátku souboru máš namespace
). Pak musíš jako callback
uvést plné jméno:
->addRule('My\Namespace\testForEmail', '...');
- Duchy
- Člen | 7
Super už to chybu nehazí, ale nefunguje validace. Je možné tu validační funkci udělat tak, jak jsem posílal? Potřebuji ji použít na celý obsah textArea.
function testForEmail($item, $arg)
{
return preg_match('/.*@.*\..*/', $item);
}
abstract class BasePresenter extends Nette\Application\UI\Presenter
{
..
$form->addTextArea('description', 'Please describe')->addRule('app\presenters\testForEmail', $this->translator->trans('Please remove any email from description..'));
}
- duke
- Člen | 650
V té validační funkci bys měl vracet spíš negaci toho, co vracíš. Validační funkce má vracet TRUE, pokud je pravidlo splněno. A ty zavádíš pravidlo „nesmí obsahovat email“, nikoli „má obsahovat email“. Proto také doporučuji funkci přejmenovat na něco jako „mustNotContainEmail“ (testForEmail je nejednoznačné).