如果条件与或运营商不在smarty工作

时间:2015-03-16 13:58:09

标签: html smarty

我正在开展一个智能项目,我正在使用if条件。

{if $userroleid neq 12 || $userroleid neq 13 || $userroleid neq 14 }
    <a href="{$v.feature_url}" class="re-upload"> Re-upload</a>
{else}
    <a href="{$v.feature_url}" class="re-upload"> View</a>
{/if}

我尝试了上面的代码。

我的假设:如果$userroleid等于12或13或14,则应显示&#34;查看&#34; ,否则应该显示&#34;重新上传&#34;

现在显示&#34;重新上传&#34;如果$userroleid等于12。

我做错了什么?

我看到以下问题对我没有帮助。

smarty nested if condition is not working properly?

Smarty 3: if, mixed conditions & operators

3 个答案:

答案 0 :(得分:5)

if始终 true - 任何号码将至少不等于其中两个。包括12,不等于13或14.因为你使用||,这就足够了。

你想要扭转事物并使用eq

{if $userroleid eq 12 || $userroleid eq 13 || $userroleid eq 14 }
    <a href="{$v.feature_url}" class="re-upload"> View</a>
{else}
    <a href="{$v.feature_url}" class="re-upload"> Re-upload</a>
{/if}

答案 1 :(得分:2)

使用&&||运算符的条件将始终为真。

{if $userroleid != 12 && $userroleid != 13 && $userroleid != 14 }

您也可以使用in_array功能:

{if !in_array($userroleid, array(12, 13, 14))}

答案 2 :(得分:1)

根据您所描述的所需输出,我认为您想要的是eq而不是neq

{if $userroleid eq 12 || $userroleid eq 13 || $userroleid eq 14 }

这只是检查你的布尔逻辑的问题。使用原始行{if $userroleid neq 12 || $userroleid neq 13 || $userroleid neq 14 },这将始终等同于true。