如果有条件或操作员不在 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))}
我正在做一个聪明的项目,我正在使用 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))}