Moznost pridat pole email do registrace

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

Zdravím,
rad by som pridal pole email do svojej registracie. V zasade som vytvoril v tabulke v DB novy column a do presentru dal dalsie policko email, nasledne moj script vyzera nejako takto:

public function RegisterFormSucceeded($form)
{
        $values = $form->getValues();
        $this->user->getAuthenticator()->add($values->name, $values->password, $values->email);
        $this->flashMessage('Uživatel registrován.');
        $this->redirect('Homepage:default');

}

Vyplnalo sa mi napriek tomu len login a password pricom column email ostaval prazdny, troska som hladal a v modeli som nasiel a nasledne upravil:

	public function add($username, $password, $email)
	{
		$this->database->table(self::TABLE_NAME)->insert(array(
			self::COLUMN_NAME => $username,
self::COLUMN_NAME => $email,
			self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
		));
	}

Ak to mám takto tak do column username sa mi prepise email, tj v DB mam username = neco@neco.cz, password = hash, email = prazdne (pravdepodobne preto ze to mam pod sebou 2× COLUMN_NAME. Skúsal som to ale editovat na COLLUMN_EMAIL co mi hlasi undefined constat atd, napriek tomu ze to znie ako banalita, neviem sa z toho vysomarit. Vedel by mi niekto pomoct?

Azathoth
Člen | 495
+
+1
-

No jistě.
self::neco znamená konstanta třídy, kterou používáš. Takže když chceš použít v authenticatoru self::COLUMN_EMAIL, tak si musíš někde nazačátku authenticator třídy, kde jsou definované konstanty, přidat novou konstantu COLUMN_EMAIL = „nazevSloupceVDatabazi“.
Doporučuji si nastudovat něco o objektových konstantách, například: http://interval.cz/…e-konstanty/ nebo http://php.net/…onstants.php

Editoval Azathoth (21. 9. 2014 15:33)

Andurit
Člen | 131
+
0
-

Mas pravdu, nevsimol som si to. Moja chyba. Každopádne ide to takže VĎAKA!

Editoval Andurit (21. 9. 2014 15:39)

Mysteria
Člen | 797
+
0
-

Nebo ty konstanty vůbec nepoužívej a napiš ten insert úplně normálně jako kdekoliv jinde:

->insert(array(
	'username' => $username,
	'email' => $email,
	'password' => Passwords::hash($password)
));