getLabelPrototype() u položky formuláře

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

Ahoj,
nevím v čem je chyba, ale prostě mi nejde změnit label u políčka ve formuláři.

$form = new Form();
$form->addText('foo', 'Bar');

$form['foo']->getLabelPrototype()->setHtml('<a href="foo.html">Foo</a>');

Po tomto kódu se u pole foo stejně zobrazí popisek „Bar“, ať dělám co dělám.

Co dělám špatně? Díky

LeonardoCA
Člen | 296
+
0
-

Jaký používáš rendererer? Je možné. že nepodporuje a ořezává html v label…

Editoval LeonardoCA (17. 10. 2012 11:49)

nanuqcz
Člen | 822
+
0
-

Nic jsem neměnil, takže předpokládám že DefaultFormRenderer.

Zvláštní je, že když nad tím prototypem zavolám třeba addClass(), tak vše funguje. Ale jakmile volám metody jako setHtml(), add(), insert(), tak se změny ve formuláři neprojeví (i když v samotném prototypu ano).

$form->addText('foo', 'Bar');
$prototype = $form['foo']->getLabelPrototype();
$prototype->setHtml('<p>nanuqcz</p>');

echo $prototype->render();  // nanuqcz
echo $form['foo']->getLabelPrototype();  // Bar
David Matějka
Moderator | 6445
+
+1
-

https://api.nette.org/…rol.php.html#406 label se prepise, pokud je nastaveno caption, takze asi by to slo takhle:

<?php
$form['foo']->caption = Html::el("a")->setText("foo")->setHref("http://bar.com");
?>

nebo vubec nenastavovat caption

nanuqcz
Člen | 822
+
0
-

Super, funguje. Moc díky :-)