Formulářový prvek text s pravidly – Nějaký jiný nápad?

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

Ahoj, vytvořil jsem aplikaci a nyní již funguje (nevím, zda-li můžu postovat odkaz).

Každopádně mám tento formulářový prvek (vím, není to nejlepší validace tel. čísla)

		...

		$form->addText('phone', 'Telefonní číslo:')
			->setRequired('Zadejte prosím své telefonní číslo')
			->addRule(Form::INTEGER, 'Telefonní číslo musí být ve správném tvaru')
			->addRule(Form::LENGTH, 'Telefonní číslo musí mít 9 číslic', 9);

		...

Formulář je následně zpracován a zavolána následující funkce:

	/**
	 * Change user's phone
	 * @param  id
	 * @param  phone
	 * @return boolean
	 */
	public function changePhone($id, $phone)
	{
		$row = $this->database->table(self::TABLE_NAME)->where('id', $id)->fetch();

		if (!$row)
		{
			return false;
		}

		$row->update(array(
			'phone' => $phone
		));
		return true;
	}

Všichni zaregistrovaní uživatelé musejí zadat 9 číslic, každopádně jedné uživatelce se podařilo projít registrací s tím, že se do databáze uložili pouze 3 znaky.

Jak je to možné?

PS: Za jakékoliv jiné typy budu velice rád.

Editoval GEpic (5. 1. 2016 16:14)

greeny
Člen | 405
+
+2
-

Tipuju že zadala něco jako „000000123“ :)

GEpic
Člen | 566
+
0
-

greeny napsal(a):

Tipuju že zadala něco jako „000000123“ :)

Ok, máš pravdu, po vyzkoušení tohoto se mi formulář rozsypal… :D

Tohle by mě VÁŽNĚ nikdy ze srdce nenapadlo, ani kolegy, ani testery… :D

Editoval GEpic (5. 1. 2016 21:14)

chemix
Nette Core | 1310
+
+2
-

@GEpic
PS: nezkousel jsem, ale narazil jsem na https://github.com/…j/form-phone

GEpic
Člen | 566
+
0
-

chemix napsal(a):

@GEpic
PS: nezkousel jsem, ale narazil jsem na https://github.com/…j/form-phone

Také jsem na to narazil, snažil jsem se najít lehčí řešení (např pomocí Patternu), ale tomuto se nakonec asi nevyhnu a budu se muset jednomu políčku věnovat víc, než doposud. :)

CZechBoY
Člen | 3608
+
0
-

Právěže ani ne.

  1. nainstaluješ doplněk přes composer
  2. přidáš compiler extension
  3. přilinkuješ js
  4. ve form továrničce pak jen $form->addPhone(…)

Editoval CZechBoY (6. 1. 2016 0:06)

akadlec
Člen | 1326
+
0
-

Přesně jak píše @CZechBoY nic extra tam není. Ten JS linkovat nemusíš pokud nepotřebuješ JS validaci. A ještě je tu minimalistická verze, kdy nepoužiješ ipub\form-phone ale jen ipub\phone a z něj jen validační pravidlo.

GEpic
Člen | 566
+
0
-

akadlec napsal(a):

Přesně jak píše @CZechBoY nic extra tam není. Ten JS linkovat nemusíš pokud nepotřebuješ JS validaci. A ještě je tu minimalistická verze, kdy nepoužiješ ipub\form-phone ale jen ipub\phone a z něj jen validační pravidlo.

Toto se mi asi v tuto chvíli zamlouvá daleko víc než využívat celý ipub\form-phone (který já bych nevyužil)

->addRule(Phone\Forms\PhoneValidator::PHONE, 'Err Desc.', ['CZ']);

Editoval GEpic (6. 1. 2016 11:40)

akadlec
Člen | 1326
+
0
-

ipub\form-phone navíc přináší integraci do formulářů nette, takže ti stačí použít ->addPhone(). Automaticky vytvoří slectbox pro zemi/předčíslí a input pro číslo a návratová hodnota je rozparsované číslo, takže si můžeš do db ukládat třeba číslo v mezinárodním formátu apod.