Update database cez metódu handle
- SontoEremo
- Člen | 341
Zdravím dá sa nejak cez metódu handle aktualizovať tabuľka v DB?
Cez UserManager si tahám z databázy aktivačný kľúč
public function Verify($activation) {
$this->database->table(self::TABLE_NAME)->where(self::COLUMN_ACTIVATION, $activation);
}
Predám to do GlobalPresenteru kde používam handleVerify
public function handleVerify($activation) {
$token = $this->userManager->Verify($activation);
if ($token) {
$token->update(array($activation => NULL));
$this->redirect(':Global:verify');
return TRUE;
}
return FALSE;
}
a v sablóne to zavolám
<a href="{plink verify!}" class="btn btn-danger btn-block noborder noradius">
Aktivovať
</a>
No zmeny sa neprejavia … stále si nad tým lámem hlavu takže Vás prosím o pomoc poprípadne nasmerovanie.
- SontoEremo
- Člen | 341
@DavidMatějka @CZechBoY
Ani s Return+Fetch Nepomohlo
public function Verify($activation) {
return $this->database->table(self::TABLE_NAME)->where(self::COLUMN_ACTIVATION, $activation)->fetch();
}
Editoval SontoEremo (7. 1. 2017 19:39)
- SontoEremo
- Člen | 341
Jan Mikeš napsal(a):
No nepředáváš ani parametr
$activation
ze šablony, který se má verifikovat:<a href="{plink verify!, 'asdfasdasd'}" class="btn btn-danger btn-block noborder noradius"> Aktivovať </a>
A tu prichádza tiež kameň úrazu
<a href="{plink verify! $activation}" class="btn btn-danger btn-block noborder noradius">
Aktivovať
</a>
hneď vyhodí
Undefined variable: activation
- SontoEremo
- Člen | 341
@CZechBoY
Skúsil som to takto
UserManager
public function activationKey() {
return $this->database->table(self::TABLE_NAME)->fetchPairs('id', 'activation');
}
public function Verify($activation) {
return $this->database->table(self::TABLE_NAME)->where(self::COLUMN_ACTIVATION, $activation)->fetch();
}
GlobalPresenter
public function renderActivation($activation) {
$showInfo = $this->userManager->activationKey();
$this->template->Info = $showInfo;
}
public function handleActivating($activation) {
$token = $this->userManager->Verify($activation);
if($token) {
$token->update(array('activation' => NULL));
$this->redirect(':Global:verify');
return TRUE;
}
return FALSE;
}
Šablóna
<a href="{plink activating!, $info}" class="btn btn-danger btn-block noborder noradius">
Aktivovať
</a>
Zmaže po kliknutí aktualizuje presmeruje funguje ako som si predstavoval… otázne je či je to dobre a môžem to používať na ostrej prevádzke? alebo sa to dá vylepšiť? za odpoveď pomoc Ďakujem.
- SontoEremo
- Člen | 341
CZechBoY napsal(a):
Vypadá to funkčně.
Pokud chceš tento příklad recyklovat a mít jen pod přihlášeným uživatelem tak se zamysli nad CSRF ochranou.
Prepáč ale nerozumiem ti teraz!
- Mysteria
- Člen | 797
Myslel to tak, že pokud ten kód používáš v nějaké veřejně nepřístupné části aplikace, tak by sis ho měl zabezpečit proti CSRF například pomocí Secured Links.