Twig框架:双条件if语句逻辑调整,锚标签显示规则求助
解决Twig中锚标签显示的逻辑条件问题
嗨,这问题其实就是个逻辑取反的小坑,我来帮你理清楚~
你现在写的代码是只有当两个条件同时满足时才显示<a>标签,但你的需求正好相反:要让标签在所有情况都显示,除了两个条件同时满足的时候。
正确的写法有两种,效果完全一致:
写法1:直接对整个条件取反
用not把你原来的条件整个包裹起来,这样就会在不满足原条件的时候显示标签:
{% if not (app.user.username == item.email and 'delete' == action.name) %} <a href="">...</a> {% endif %}
写法2:利用德摩根定律拆分逻辑
根据逻辑运算的德摩根定律,not (A and B) 等价于 not A or not B,所以也可以写成这样,可读性可能更好:
{% if app.user.username != item.email or 'delete' != action.name %} <a href="">...</a> {% endif %}
简单说就是:只要用户用户名不等于item邮箱,或者当前动作不是delete,这两个情况任意一个成立,就显示标签;只有当两个条件都凑齐(用户是item的邮箱持有者,且动作是delete)的时候,才不显示。
内容的提问来源于stack exchange,提问作者naspy971
相关产品推荐
相关产品推荐

