Přihlašování uživatele – ne emailovou adresou

lenkahub
Člen | 12
+
0
-

Ahoj, potřebovala bych poradit s přihlašováním uživatelů. Má v db tabulku user a ve sloupečku username je přihlašovací jméno(emailová adresa). To mi funguje. Ale teď potřebuji přidat uživatele, kteří se nebudou přihlašovat emailem ale budou pod různými čísly. Takže ve sloupečku username bude např. RZ001.251.987. A když tohle vyplním do přihlašovacího formuláře tak mi to vyhodí hlášku: Do e-mailové adresy zahrňte znak @.

Nevíte někdo co s tím?

Moc děkuji všem za rady.

Toanir
Člen | 57
+
0
-

Ahoj,

pravděpodobně budeš mít na formuláři nastavenou validaci, pravděpodobně bude vypadat nějak takhle:

$form->addText('username', 'Login')
	->addRule('Form::EMAIL');

Co se týče vstupu mělo by stačit odstranit to „addRule()“.

Jestli si můžu dovolit připomínku k návrhu:
Pokud zavádíš uživatelský kódy jak username, doporučil bych u uživatelů mít rozdělený sloupečky pro username (předpokládám že všechny username budou emaily) a pro idCode. V modelu potom mít jakousi metodu

// syntaxe asi nebude správná ale jde mi o myšlenku
function findUserByLogin(string $login) {
  $this->db->select('id', 'passwordHash')->from('user')
    ->where('username = ? OR idCode = ?', $login, $login)
    ->fetchOne();
}

Tohle dělení by mělo představovat jen trochu kódu navíc ale zajistí to, že by ses neměla zbláznit při zjišťování mailů až s tím budeš pracovat později :)

lenkahub
Člen | 12
+
0
-

Děkuji za radu, ale ->addRule() tam nemám.

Toanir
Člen | 57
+
0
-

Hm, a dokážeš v kódu najít, kde vzniká ta chybová hláška?

Aishak
Člen | 30
+
0
-

Buď je tam addRule (což není) a nebo máš to pole typu email, tedy $form->addEmail tak změn na $form->addText.
Případně ti to může validovat ještě metoda onValidate() a nebo i někde v onSuccess(), případně onSubmit().

Editoval Aishak (6. 4. 2020 12:21)

Marek Bartoš
Nette Blogger | 1171
+
0
-

validovat ještě metoda onValidate() a nebo i někde v onSuccess(), případně onSubmit()

Správně je onValidate()

Děkuji za radu, ale ->addRule() tam nemám.

Vždycky pomůže ukázat kód, který ti nefunguje, takhle jen hádáme. Též není patrné zda chceš, aby byl email a číslo v jednom inputu nebo ve dvou a mít vždy alespoň jeden z nich vyplněný

lenkahub
Člen | 12
+
0
-

Děkuji, bylo to typem inputu ve formuláři. Bylo tam $form->addEmail.