vlastní validace háže „Unknown operation“
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- castamir
- Člen | 629
Nějaký důvod, proč následující ukázka z dokumentace:
// uživatelský validátor: testuje, zda je hodnota dělitelná argumentem
function divisibilityValidator($item, $arg)
{
return $item->value % $arg === 0;
}
$form->addText('number', 'Číslo:')
->addRule('divisibilityValidator', 'Číslo musí být dělitelné %d.', 8);
háže: Nette\InvalidArgumentException
Unknown operation ‚divisibilityValidator‘ for control ‚number‘. ?
Editoval castamir (23. 5. 2012 15:24)
- frosty22
- Člen | 373
V dokumentaci to je ona funkce definovaná v globálním scope, předpokládám že ty asi tu funkci máš jako metodu objektu presenteru, což poté musíš mít callback takto:
$form->addText('number', 'Číslo:')
->addRule(callback($this, "divisibilityValidator"), 'Číslo musí být dělitelné %d.', 8);
Případně můžeš i mít:
$form->addText('number', 'Číslo:')
->addRule(function ($item, $arg)
{
return $item->value % $arg === 0;
}, 'Číslo musí být dělitelné %d.', 8);
Editoval frosty22 (24. 5. 2012 0:08)
- castamir
- Člen | 629
Myslel jsem do dokumentace tady na nette, zápis
$form->addText('number', 'Číslo:')
->addRule(callback($this, "divisibilityValidator"), 'Číslo musí být dělitelné %d.', 8);
považuju za lepší příklad použití, než
$form->addText('number', 'Číslo:')
->addRule('divisibilityValidator', 'Číslo musí být dělitelné %d.', 8);
protože metoda divisibilityValidator se velmi pravděpodobně bude nacházet ve stejné třídě, tako komponenta formuláře.