Vlastní validační pravidlo pro validaci vkládané IPv4 adresy
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- James
- Člen | 54
Potřebuji vytvořit validační pravidlo formuláře, které bude validovat
správný tvar vkládané IPv4 adresy.
Zkouším to tímto způsobem a hází mi to chyby, že nezná mnou vytvořený
validátor. Jsem na správné cestě, nebo zle validaci provést úplně jinak.
Postupoval jsem podle návodu.
Ještě jsem zkoušel validovat pomocí regulárních výrazů, ale tomu bych se raději vyhnul, protože co jsem tak hledal, nenašel jsem nikdy úplně 100% výraz, který by fungoval.
public function createComponentDatabaseConnection()
{
$form = new Nette\Application\UI\Form;
function ipAdressValidator($item)
{
return filter_var($item->value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
}
$form->addText('server', 'Server (IPv4 adresa):')
->addRule('ipAdressValidator', 'Zadejte adresu ve správném formátu IPv4');
$form->addSubmit('connect', 'Připojit se');
$form->onSuccess[] = $this->databaseConnectionFormSucceeded;
return $form;
}
Dík za radu.
Editoval James (3. 12. 2013 16:51)
- Majkl578
- Moderator | 1364
Nemůžeš takhle deklarovat pojmenovanou funkci, protože zvenčí nebude vidět. Použij ideálně anonymní funkci:
use Nette\Application\UI\Form;
use Nette\Forms\Control\TextBase;
public function createComponentDatabaseConnection()
{
$form = new Form();
$form->addText('server', 'Server (IPv4 adresa):')
->addRule(function (TextBase $item) {
return filter_var($item->getValue(), FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
}, 'Zadejte adresu ve správném formátu IPv4');
$form->addSubmit('connect', 'Připojit se');
$form->onSuccess[] = $this->databaseConnectionFormSucceeded;
return $form;
}