Validacni pravidlo s vice argumenty
- kreed
- Člen | 13
Ahoj…
Resim takovy problem s vlastnim validacnim pravidlem.
Problem:
Mam formular pridani uzivatele a validacni pravidlo pro unikatni login a email,
ktery vytahnu po odeslani z databaze.
<?php
$form->addText('login', 'Přihlašovací jméno: ')->addRule(callback($this,'LoginValidation'), 'uzivatelske jmeno se nachazi v db, zadejte jine');
//...
//validace
public function LoginValidation($input) {
$login = $input->getValue();
$data = $this->usersRepository->getUsersList(array('login' => $login));
if( !count($data)) {
return true;
}
else {
return false;
}
}
?>
Tady vse funguje jak ma :)
Problem ale nastane, kdyz chci editovat, jiz zapsaneho uzivatele. Mam hidden policko „u_id“ a potrebuji upravit validacni pravidlo tak, aby bralo v potaz i hodnotu v policku ‚u_id‘ a ja mohl upravit dotaz pro SQL, resp. jak poslat hodnotu ‚u_id‘ do validacniho pravidla.
Mam jiz naplneny formular daty z databaze:
<?php
$form->addHidden('u_id');
//a ted neco jako:
$form->addText('login', 'Přihlašovací jméno: ')->addRule(callback($this,$u_id,'EditLoginValidation'), 'uzivatelske jmeno se nachazi v db, zadejte jine');
//...
//validace pak neco jako:
public function EditLoginValidation($input, $u_id) {
$data = $this->usersRepository->getUsersList(array('login' => $login, 'u_id != ?' => $u_id));
//atd...
}
?>
A ted babo rad :)
- kreed
- Člen | 13
A jak pristoupim k tem datum z formulare? Ty promenne byly spis
ilustrativni. Data jsou jen ve formulari… Zkousel jsem tvou variantu a nejde,
resp. to hlasi ze $input a $u_id neni definovan.
Takze jeste jednou:
<?php
$form->addHidden('u_id');
$form->addText('login', 'Přihlašovací jméno: ')->addRule(function ($input) use ($u_id) {
$this->EditLoginValidation($input, $u_id); //mozna ($this, $form['u_id']), ale to taky nejde
}, 'uzivatelske jmeno se nachazi v db, zadejte jine');
public function EditLoginValidation($input, $u_id) {
$data = $this->usersRepository->getUsersList(array('login' => $login, 'u_id != ?' => $u_id));
//atd...
}
?>
Editoval kreed (10. 3. 2014 9:10)
- enumag
- Člen | 2118
Doporučuji dokumentaci PHP, konkrétně Closures popřípadě fórum http://diskuse.jakpsatweb.cz/.