Úprava HTML formuláře

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

Ahoj, mám pár zádrhelů při implementaci Form. Mám Nette 0.9.2. a Form používám samostatně. Díky moc za rady :-)

  1. Lze nějak jednoduše dodefinovat u vkládání emailu, aby to nahlásilo chybu i když uživatel nechá v inputu samotný zavináč a nevyplní svůj email?
$form = new Form();
$form->addText('email', 'Email:')
	->setEmptyValue('@')
	->addCondition(Form::FILLED)
	->addRule(Form::EMAIL, 'Zadana adresa neni platnym emailem!');
  1. Lze nějak změnit text u checkboxu? Potřeboval bych, aby vedle checkboxu byl text např. „Agree with terms.“ a slovo terms bylo odkaz na další stránku.
  2. Potřeboval bych do formuláře vložit reCaptchu mezi poslední položku Formu a odesílací tlačítko submit. Knihovna reCaptchy mi vrací rovnou HTML kód, který bych optřeboval napasovat přímo do tabulky, ve které je formulář.

Moc díky!

Editoval tigercz (7. 1. 2010 14:47)

Ondřej Mirtes
Člen | 1536
+
0
-
  1. Myslím, že to, co chceš, úplně jednoduše:
$form->addText('email', 'Email:')
        ->setEmptyValue('@')
        ->addRule(Form::FILLED)
        ->addRule(Form::EMAIL, 'Zadana adresa neni platnym emailem!');
tigercz
Člen | 14
+
0
-

Ondřej Mirtes napsal(a):

  1. Myslím, že to, co chceš, úplně jednoduše:
$form->addText('email', 'Email:')
        ->setEmptyValue('@')
        ->addRule(Form::FILLED)
        ->addRule(Form::EMAIL, 'Zadana adresa neni platnym emailem!');

Paráda, to funguje :-) Díky moc :-) Ještě kdyby někdo věděl ten zbytek, bylo by to super :-)

Bernard Williams
Člen | 207
+
0
-

Nazdárek,

2. Co třeba tohle?

$form->addText('terms', 'Terms:')
	->setOption ('description', Html::el('a')->href('...')->setText('Agree').' with terms.');

možná by to šlo dát přímo do Label (nezkoušel jsem):

$form->addText('terms', Html::el('a')->href('...')->setText('Agree').' with terms.')
...

Bernard

tigercz
Člen | 14
+
0
-

Bernard Williams napsal(a):

Nazdárek,

2. Co třeba tohle?

$form->addText('terms', 'Terms:')
	->setOption ('description', Html::el('a')->href('...')->setText('Agree').' with terms.');

možná by to šlo dát přímo do Label (nezkoušel jsem):

$form->addText('terms', Html::el('a')->href('...')->setText('Agree').' with terms.')
...

Bernard

Zkoušel jsem

$form->addCheckbox('terms', 'Agree with ' . Html::el('a')->href('/terms/')->setText('terms.'));

a to vykreslí checkbox a vedle toho:

Agree with <a href="/terms/">terms.</a>
Kenn
Člen | 110
+
0
-

tigercz napsal(a):
Zkoušel jsem

$form->addCheckbox('terms', 'Agree with ' . Html::el('a')->href('/terms/')->setText('terms.'));

a to vykreslí checkbox a vedle toho:

Agree with <a href="/terms/">terms.</a>

A to je špatně? :-)

tigercz
Člen | 14
+
0
-

Kenn napsal(a):

tigercz napsal(a):
Zkoušel jsem

$form->addCheckbox('terms', 'Agree with ' . Html::el('a')->href('/terms/')->setText('terms.'));

a to vykreslí checkbox a vedle toho:

Agree with <a href="/terms/">terms.</a>

A to je špatně? :-)

No já bych raději, aby to slovo terms byl klikatelný odkaz, takhle mám vypsaný slovo terms a okolo HTML tagy :-)

Aurielle
Člen | 1281
+
0
-

V Nette 0.8 mi fungovalo toto, v novějších verzích jsem to netestoval:

$label = Html::el()->setHtml('Souhlasím s <a href="' . $this->link('Web:Podminky') . '">podmínkami služby.</a>');
$form->addCheckbox('agree', $label)
	->addRule(Form::FILLED, 'Pro pokračování je nutné souhlasit s podmínkami.');
tigercz
Člen | 14
+
0
-

gmvasek napsal(a):

V Nette 0.8 mi fungovalo toto, v novějších verzích jsem to netestoval:

$label = Html::el()->setHtml('Souhlasím s <a href="' . $this->link('Web:Podminky') . '">podmínkami služby.</a>');
$form->addCheckbox('agree', $label)
	->addRule(Form::FILLED, 'Pro pokračování je nutné souhlasit s podmínkami.');

Super, funguje :-) Jednodušší než jsem čekal :-) Místo $this->link(…) sem si doplnil přímo odkaz a funguje.

Díky moc!

PetrP
Člen | 587
+
0
-

V checkboxu v labelu nemůže být Html, je to asi bugícek (zvláště jestli to v 0.8 fungovalo).

David Grudl
Nette Core | 8228
+
0
-

fixed

martin.doubravsky
Člen | 7
+
0
-

Ahoj, nikde jsem nenasel odpoved, tak se zeptam:

html5 umoznuje takovyto vyhodnejsi zapis:

<label>jmeno <input type="text"></label>

namisto

<label>jmeno</label><input type="text">

Otazka tedy zni, jak toho docilim?

Honza Kuchař
Člen | 1662
+
0
-

Proč to potřebuješ, když ti to Nette generuje samo? (myslím ty provazovací ID)

Editoval Honza Kuchař (15. 5. 2010 1:34)

Mikulas Dite
Člen | 756
+
0
-

Jestli to ale opravdu chceš měnit, musíš přepsat renderPair, nebo renderovat manuálně.

Honza Kuchař
Člen | 1662
+
0
-

Manulání render mu nepomůže. {$form[„xxx“]->label} vrací už <label for=„xxx“></label>

Mikulas Dite
Člen | 756
+
0
-

Jasně, ale může si label napsat ručně a do něj vložit {input xxx}.

martin.doubravsky
Člen | 7
+
0
-

Mikulas Dite napsal(a):

Jasně, ale může si label napsat ručně a do něj vložit {input xxx}.

Diky, to je co sem hledal, nejak me to nenapadlo :)

Dalsi problem, ktery mi brani v bezproblemovem vyuziti nette formu se tyka html5:
jak jednoduse nastavim jiny type inputu (napr <input type=„email“> dalsi viz http://www.w3.org/…5/forms.html#…

David Grudl
Nette Core | 8228
+
0
-

martin.doubravsky napsal(a):

html5 umoznuje takovyto vyhodnejsi zapis:

<label>jmeno <input type="text"></label>

Tohle umí i HTML4, ale nejpoužívanější prohlížeč to nepodporoval.

Dalsi problem, ktery mi brani v bezproblemovem vyuziti nette formu se tyka html5:
jak jednoduse nastavim jiny type inputu (napr <input type=„email“> dalsi viz http://www.w3.org/…5/forms.html#…

přes $form->addText('email', 'E-mail:')->controlPrototype->type = 'tel';

kralik
Člen | 230
+
0
-

Ahoj,
předem se omlouvám za dotaz trochu mimo, ale nechci kvůli tomuto zakládat nové téma.

někde zde na fóru jsem našel jak u formulářových prvků vypnout historii.

Myslím tím aut. doplňování kdysy zadaných hodnot.

Bohužel jsem to stále nenašel.

Mooc díky za pomoc.

Filip Procházka
Moderator | 4668
+
+1
-

Cca takto?

$form->addText('name', 'Jméno')
	->controlPrototype
		->autocomplete('off');

Příště založ vlastní vlákno

Editoval HosipLan (18. 7. 2011 8:23)

kralik
Člen | 230
+
0
-

super, to je přesně ono.

Moooc díky