Úprava HTML formuláře
- tigercz
- Člen | 14
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 :-)
- 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!');
- 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.
- 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
- 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
Ondřej Mirtes napsal(a):
- 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
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
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>
- tigercz
- Člen | 14
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
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
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
V checkboxu v labelu nemůže být Html
, je to asi
bugícek (zvláště jestli to v 0.8 fungovalo).
- martin.doubravsky
- Člen | 7
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
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
Jestli to ale opravdu chceš měnit, musíš přepsat renderPair, nebo renderovat manuálně.
- Honza Kuchař
- Člen | 1662
Manulání render mu nepomůže. {$form[„xxx“]->label} vrací už <label for=„xxx“></label>
- martin.doubravsky
- Člen | 7
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
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';
- Filip Procházka
- Moderator | 4668
Cca takto?
$form->addText('name', 'Jméno')
->controlPrototype
->autocomplete('off');
Příště založ vlastní vlákno
Editoval HosipLan (18. 7. 2011 8:23)