Smarty猫逃脱了HTML

时间:2012-09-12 07:35:35

标签: php escaping smarty html-select

我的代码很简单:

{html_checkboxes values=$user_data['names']['id'] output = $user_data['names']['user_name']|cat:' | Status: '|cat:$user_data['names']['status'] escape=false}

在数组$user_data['names']['status']中存储了用户状态,如<span style="color: red">User</span>,因此我需要将其显示为用户名|状态:用户(用户为红色),但聪明的将其切断。没有猫,它只有一个变量就可以了。

我还测试了{user_data['names']['status']}"lol"|cat:$user_data['names']['status']$user_data['names']['user_name']|cat:' | Status: '|cat:$user_data['names']['status'] - 它运行正常。问题在哪里?

1 个答案:

答案 0 :(得分:0)

根据版本(Smarty2 / Smarty3),您可能需要执行以下操作之一:

{html_checkboxes values=$user_data.names.id output={$user_data.names.user_name|cat:' | Status: '|cat:$user_data.names.status} escape=false}

将您的值分配给变量以使事情变得愚蠢:

{assign var="foo" value=$user_data.names.user_name|cat:' | Status: '|cat:$user_data.names.status}
{html_checkboxes values=$user_data.names.id output=$foo escape=false}

或使用{capture}来处理更复杂的事情(无需cat修饰符):

{capture assign="foo"}{$user_data.names.user_name|cat:' | Status: '|cat:$user_data.names.status}{/capture}
{html_checkboxes values=$user_data.names.id output=$foo escape=false}