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

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

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

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

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>");
buffus
Člen | 101
+
0
-

Aha. Díky (především za odkaz).