[Nette/Forms] Vypnout ořezávání mezer u hesla
- matronator
- Člen | 38
Zdravím, mám jeden problém ohledně Nette formulářů a validace. Zjistil jsem, že Nette automaticky ořezává mezery z password inputů, což bych potřeboval nějak deaktivovat, protože používám vlastní validátor/formater.
Jde to nějak vypnout? Pročítal jsem API dokumentaci, ale všude jsem
našel jenom addRule
, addCondition
apod., a žádnou
funkci pro odstranění pravidla/validace.
Jde to nějak nastavit přímo na tom formulářovém prvku
($form->addPassword
), tak aby se vyplo jen to ořezávání a
zbytek validace zůstal? Nebo si budu muset vytvořit vlastní prvek?
Editoval matronator (26. 11. 2020 13:02)
- matronator
- Člen | 38
Tak jsem zkoušel přidat vlastní onValidate, ale tam už ty data taky přijdou ořezané…
- Melebius
- Člen | 16
Taky jsem na to narazil. Jednoduché řešení je číst přímo
z $_POST
, samozřejmě pokud máte v daném místě kódu
k dispozici název pole formuláře. A ošetřil bych pak aspoň
odřádkování, jak to dělá \Nette\Forms\Helpers::sanitize
:
$value = strtr((string)$value, "\r\n", ' ');
Můj případ použití je zadání oddělovače pro explode
.
Platné hodnoty jsou v tomto případě i mezera, čárka+mezera apod.
- m.brecher
- Generous Backer | 873
@matronator
ideální je se s oříznutou mezerou u hesel počítat a neumožnit uživatelům aby si zadali heslo, které mezerou začíná. Pokud ale v projektu máš již hotové uživatelské profily s hesly které obsahují mezeru na začátku, nebo na konci, potom bych zkusil jít cestou:
$form->addPassword(...) // tohle ne
$form->addText()->setHtmlAttribute('type', 'password') // tohle by mohlo oříznutí mezery vyřešit
Píšu to z hlavy a nezkoušel jsem to, ale tipnul bych, že to problém vyřeší.
- m.brecher
- Generous Backer | 873
@Melebius také mívám nutkání když Nette nedělá, co potřebuji, použít $_POST a napsat si to sám. Kolikrát brouzdání rozsáhlou dokumentací zabere mnohonásobně více času než dva/tři řádky PHP. Jenže vždy když jsem Nette obešel pomocí $_POST, nakonec jsem se ocitnul ve slepé uličce nekompatibility se zbytek Nette aplikace. Takže $_POST z principu nedoporučuji, pouze zcela vyjímečně.