另一个标签中的 {if} 的聪明问题


Smarty issue with {if} inside another tag

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

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

当我调用它并在里面使用"if"标签时,我收到语法错误和"太多速记属性"错误。

我是这样使用它的:

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

如果我删除"if"标签,它就可以工作了。如何解决?谢谢。

您不能在标签中嵌套 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 属性。

相关文章: