在另一个标签内使用{if}的Smarty问题

时间:2014-12-27 03:24:10

标签: php smarty

我构建了创建表单的插件:

function smarty_function_form(array $parameters, Smarty_Internal_Template $smarty) {
    $form = new Form($parameters);
    $smarty->form_object = $form;
    return $form->output_opentag();
}

当我打电话给他并使用"如果"标签里面,我收到语法错误和"太多的速记属性"错误。

我这样使用它:

{form name="the_name" {if $var == 5}class="active"{/if} method="post" action=""}

如果我删除"如果"标记它的工作。 怎么解决?谢谢。

1 个答案:

答案 0 :(得分:1)

您无法在标记内嵌套Smarty标记或块。您的问题有一个非常简单的解决方案:在{if}标记之前移动{form}

{assign var=class value=''}
{if $var == 5}
    {assign var=class val=active}
{/if}
{form name="the_name" class=$class method="post" action=""}

然后,在{form}插件的PHP代码中,如果class参数的值为空并且您不想要,则可以跳过生成class属性生成类似class=""的东西(顺便说一句,它是无害的)。