Update database cez metódu handle

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

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.

David Matějka
Moderator | 6445
+
+2
-

nemas tam return

CZechBoY
Člen | 3608
+
0
-

@DavidMatějka return a fetch() :-)

SontoEremo
Člen | 341
+
0
-

@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)

Jan Mikeš
Člen | 771
+
0
-

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>

Editoval Jan Mikeš (7. 1. 2017 20:17)

SontoEremo
Člen | 341
+
0
-

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

CZechBoY
Člen | 3608
+
0
-

Tak tam tu proměnnou předej?

SontoEremo
Člen | 341
+
0
-

@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.

CZechBoY
Člen | 3608
+
0
-

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.

SontoEremo
Člen | 341
+
0
-

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
+
+1
-

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.