DefaultFormRenderer a escapování
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- buffus
- Člen | 101
Nette Framework 2.0.10 stabilní
Ahoj,
prosím o radu:
presenter
protected function createComponentMyForm()
{
...
$form->addText($a, $x . $y);
...
}
šablona
{control myForm}
Je možné za použití DefaultFormRenderer vykreslit $x odlišně od $y? Stačí mi např. $y obalit strong nebo přiřadit třídu… Zkouším HTML elementy, nebo vepsat do addText kolem $y přímo html, ale vložený html kód se escapuje. Nebo musím formulář vykreslit manuálně?
- David Matějka
- Moderator | 6445
no renderer s tim nic nevymysli, protoze je to spojeno do jednoho stringu, melo by ale asi fungovat:
$form->addText($a, \Nette\Utils\Html::el()->setHtml("$x <strong>$y</strong>");
- buffus
- Člen | 101
Díky za odpověď. To funguje a já koukám, že jsem dotaz v rámci zjednodušení položil úplně špatně. Vlastně jsem se motal kolem níže uvedeného prvního příkladu:
1.
$form->addText($a, Html::el()->setHtml("$x <strong>$shops_product->ref('products')->product_name</strong>");
// vyhodí
// Nette\MemberAccessException
// Cannot read an undeclared column "ref"
2.
$y = $shops_product->ref('products')->product_name;
$form->addText($a, Html::el()->setHtml("$x <strong>$y</strong>");
// funguje
3.
$form->addText($a, Html::el()->setHtml("$x <strong>$shops_product->store</strong>");
// funguje
- jiri.pudil
- Nette Blogger | 1032
V tom prvním případě bys to musel obalit do {}:
$form->addText($a, Html::el()->setHtml("$x <strong>{$shops_product->ref('products')->product_name}</strong>");