Nevalidní výstup z ConventionalRenderer pro XHTML Strict
- Savannah
- Člen | 30
Pokud vyrobim AppForm a vygeneruju ho standardně pomocí
ConventionalRenderer, tak v <form>
tagu je
name=...
, což ale bohužel strict XHTML nepovoluje. Nějaký
nápad, jak to obejít? (krom toho změnit strict na transitional)
(EDIT: Pardon, zapomínám na dobré mravy při postování reportů O:-) )
Editoval Savannah (3. 2. 2010 20:22)
- Ondřej Mirtes
- Člen | 1536
Kouknul jsem se na vygenerovaný kód pár formulářů a žádný atribut name tam nevidím. Můžeš sem postnout kód (továrničku + vykreslení v šabloně + výsledné HTML)?
- Savannah
- Člen | 30
HTML:
<form action="/segment/document_root/cenik.html?do=priceListForm-submit" method="post" name="frm-priceListForm" onsubmit="return nette.validateForm(this)">
<table>
<tr class="required">
<th><label class="required" for="frmpriceListForm-name">Vaše jméno:</label></th>
<td><input type="text" class="text" name="name" id="frmpriceListForm-name" value="" /></td>
</tr>
<tr class="required">
<th><label class="required" for="frmpriceListForm-email">Váš e-mail:</label></th>
<td><input type="text" class="text" name="email" id="frmpriceListForm-email" value="" /></td>
</tr>
<tr class="required">
<th><label class="required" for="frmpriceListForm-question">Váš dotaz:</label></th>
<td><textarea cols="40" rows="10" name="question" id="frmpriceListForm-question"></textarea></td>
</tr>
<tr>
<th> </th>
<td><input type="submit" class="button" name="send" id="frmpriceListForm-send" value="Odeslat dotaz" /></td>
</tr>
</table>
</form>
Továrna:
protected function createComponentPriceListForm() {
$form = new AppForm;
$form->addText('name', 'Vaše jméno:')
->addRule(Form::FILLED, 'Prosím vyplňte Vaše jméno.');
$form->addText('email', 'Váš e-mail:')
->addRule(Form::FILLED, 'Prosím vyplňte Váš email.')
->addRule(Form::EMAIL, 'Prosím vyplňte validní email.');
$form->addTextArea('question', 'Váš dotaz:')
->addRule(Form::FILLED, 'Prosím zadejte dotaz.');
$form->addSubmit('send', 'Odeslat dotaz');
$form->onSubmit[] = callback($this, 'priceListFormSubmitted');
Html::$xhtml = true;
return $form;
}
Šablona:
{widget priceListForm}
Nette Framework 0.9.3 (revision cc750ea released on 2010–01–28)
Edit: to Html::$xhtml = true;
jsem tam jenom zkoušel, nemá
vliv, původní problém jsem měl bez něj
Editoval Savannah (3. 2. 2010 20:26)
- iguana007
- Člen | 970
Mě to tam taky vloží atribut name=„frm-loginForm“ mám Nette 0.9.3 z 2.2.2010 (dneska stažené) – už jsem to tady v nějakém vlákně zmíňoval … kvůli tomu jsem dělal celý web v XHTML 1.0 Transitional.
Továrnička:
protected function createComponentLoginForm()
{
$form = new AppForm;
$form->addText('name', 'Name:')
->addRule(Form::FILLED, 'Enter your name');
$form->addPassword('password', 'Password:')
->addRule(Form::FILLED, 'Enter your password');
$form->addSubmit('login', 'Log in');
$form->onSubmit[] = array($this, 'formSubmitted');
return $form;
}
Výstup:
<form action="/document_root/admin/login/?do=loginForm-submit" method="post" name="frm-loginForm" onsubmit="return nette.validateForm(this)">
<table>
<tr class="required">
<th><label class="required" for="frmloginForm-name">Name:</label></th>
<td><input type="text" class="text" name="name" id="frmloginForm-name" value="" /></td>
</tr>
<tr class="required">
<th><label class="required" for="frmloginForm-password">Password:</label></th>
<td><input type="password" class="text" name="password" id="frmloginForm-password" /></td>
</tr>
<tr>
<th> </th>
<td><input type="submit" class="button" name="login" id="frmloginForm-login" value="Log in" /></td>
</tr>
</table>
</form>
EDIT: kurňa, než jsem to tu nabouchal, tak me Savannah předběhl :)
Editoval iguana007 (3. 2. 2010 20:26)
- toka
- Člen | 253
Já mám tedy ještě Nette Framework 0.9.2 (revision b9fd602 released on
2009–11–12), ale tam mi to atribut name
nepřidává. V Nette
Framework 0.9.3 (revision cc750ea released on 2010–01–28) však ano.
A navíc po přechodu na vyšší verzi se mi teď objevilo v aplikaci, která
jela v 0.9.2 pár warningů :-)
EDIT:
Ty chyby jsou úzce spojeny se souborem Translator.php
, problém je
v eval
a plural
.
Editoval toka (3. 2. 2010 22:43)
- David Grudl
- Nette Core | 8249
XHTML, co to je? ;)
Změnil jsem name=„frm-loginForm“ na id=„frm-loginForm“