如果有条件或操作员不在 smarty 中工作

If Condition with or operator not working in 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,它应该显示"View", 否则应该显示"Re-upload"

如果 $userroleid 等于 12,现在显示 "Re-upload"。

我做错了什么?

我看到了下面的问题,但对我也没有帮助。

smarty nested if condition is not working properly?

Smarty 3: if, mixed conditions & operators

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}

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

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

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

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

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

您也可以使用 in_array 功能:

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