addRule() – prosba o vysvetleni

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
edoras
Člen | 21
+
0
-

Snažím se proniknout do Nette a nějak asi nechápu užití validačního pravidla addRule() pro vlastní validační funkci. Domníval jsem se, že pokud jako první parametr uvedu funkci, aplikace pravidla bude záležet na výsledku funkce. Pokud tedy funkce vrátí TRUE, pravidlo bude splněno, pokud FALSE, pravidlo nevyhovělo. Evidentně ale něco chápu špatně, protože když udělám toto:

$formular->addText('username','nick')->addRule('validace::isUsernameAvailable', "chyba");

class validace {
 public function isUsernameAvailable($item) {
   ...
        if ($selection>0)
                return FALSE;
        return TRUE;
        }
}

dostanu hlasku „Catchable fatal error: Object of class Nette\Forms\Controls\TextInput could not be converted to string“. Co je spatně?

David Matějka
Moderator | 6445
+
+1
-

$item neni samotna hodnota, ale TextInput, k hodnote se dostanes pomoci $item->value

edoras
Člen | 21
+
0
-

Aha, diky. Ja se domnival, ze chybovou hlasku hazi addRule(). Ve skutecnosti jsem zpracovaval $item ve validacni funkci a choval jsem se k tomu jako k promenne. Uprava $item->value problem vyresila, diky ;-) .