Nevalidní výstup z ConventionalRenderer pro XHTML Strict

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

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
+
0
-

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
+
0
-

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>&nbsp;</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
+
0
-

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>&nbsp;</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)

Aurielle
Člen | 1281
+
0
-

0.9.3 RC taky přidává atribut name.

Savannah
Člen | 30
+
0
-

a dá se s tim něco dělat? Nějak snadno ho odstranit?

toka
Člen | 253
+
0
-

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 | 8129
+
0
-

XHTML, co to je? ;)

Změnil jsem name=„frm-loginForm“ na id=„frm-loginForm“