Neuspěšné zadání kódu pro vstup do soukromé sekce vypisuje „Kód ‚Array‘ nebyl nalezen“ místo zadané hodnoty
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Zdeno1981
- Člen | 115
Zdravím,
myšlenka je pres databázi (dibi) zkontrolovat zadaný kód zda exsistuje a
povolit/nepovolit tak přístup do soukromé sekce což mi funguje ale problém
je v tom že když je špatně zadaný kód pro vstup, vyhodi se chyba „Kód
‚Array‘ nebyl nalezen“ místo vložené hodnoty.
presenter s formulářem:
<?php
public function FormSubmitted(AppForm $form) {
$values = $form->getValues();
try {
$this->getUser()->login($values['code']);
$this->flashMessage('kód byl přijat');
} catch (AuthenticationException $e) {
$form->addError($e->getMessage());
}
}
?>
model:
<?php
class UsersModel extends Object implements IAuthenticator {
public function authenticate(array $credentials){
$code = $credentials;
$row = dibi::fetch('SELECT * FROM codes WHERE code=%s', $code);
if (!$row) {
throw new AuthenticationException("Kód '$code' nebyl nalezen", self::IDENTITY_NOT_FOUND);
}
return new Identity($row->id, $row->code, $row);
}
}
?>
- bojovyletoun
- Člen | 667
Je to takové magické (chytré). Metoda User::login() funguje
„s libovloným počtem“ argumetnů – func_get_args- argumenty se rovnou
předají do authenticate() jako pole, takže výsledek pak funguje takto
SELECT * FROM codes WHERE code='first', 'second'
– nesmysl
SELECT * FROM codes WHERE code='first'
– jo