2011-07-16 4 views
0

bien ... Pouvez-vous me dire pourquoi cela fonctionne:Smarty 3: si, les conditions et les opérateurs mixtes

{if !$conta|contains:"word1" && ($product->id_category_default < 388 || $product->id_category_default > 475)} 

et cela ne:

{if (!$conta|contains:"word1" || !$conta|contains:"word2") && ($product->id_category_default < 388 || $product->id_category_default > 475)} 

où est l'erreur de syntaxe?

+0

Est-ce une erreur de syntaxe que vous obtenez? Ça ne ressemble pas à ça. Est-ce vraiment un problème de logique? Voulez-vous vraiment dire "ne contient pas $ word1" OU "ne contient pas $ word2" par quoi il pourrait en avoir un ou l'autre? Ou cherchez-vous à les exclure tous les deux? –

+0

S'il vous plaît montrer le contenu de '$ conta, $ word1, $ word2' –

+0

@Michael vous avez raison, ce n'est pas une erreur de syntaxe, mais de la logique. Je ne peux pas utiliser || dans ce cas si je veux OU avec un! (ne contient pas avec opérateur non) Merci – smepie

Répondre

7

Essayez ceci:

{if !($conta|contains:"word1" || $conta|contains:"word2") && ($product->id_category_default < 388 || $product->id_category_default > 475)} 
+0

il suffit d'utiliser && au lieu de || ... en fonction de! $ conta ou simplement $ conta ... merci – smepie

Questions connexes