2015-08-21 2 views
1

Je me demande est-il un moyen dans smarty de faire quelque chose comme mysql LIKE. I'v a:Smarty comme mysql '%%'

$value = 'text1/text2';//posible values (text1/text2,text1,text2) 

et que vous voulez faire quelque chose si, dans cette $value utres un text1.

p.s. J'ai essayé de regarder sur Google et Stack, peut-être que je suis aveugle mais je ne vois pas la réponse que je cherche.

Thx pour l'aide.

+0

Pourquoi ne pas stocker les valeurs sur un tableau et appelez in_array sur votre modèle ? '{if in_array ('text1', $ values)}' – Raulucco

+0

Il est stocké dans la base de données de cette façon, probablement je devrais l'exploser pour en faire un tableau. Y at-il une explosion dans smarty? –

+0

Vous devez donc enregistrer une fonction que vous pouvez appeler à partir du modèle et renvoyer le résultat à partir de là, puis vous pouvez utiliser la fonction in array sur le modèle – Raulucco

Répondre

1

Thx pour aider de Raulucco iv fait quelque chose comme ceci.

{assign var=done value="/"|explode:$value} 
{if in_array($serch, $done)} 

J'ai travaillé pour moi.

0

Votre solution est plus simple et meilleure. J'allais une façon plus compliquée :-) Certains où vos fichiers php:

<?php 
$smarty->register_function('get_texts_match', 'text_exists_on_db'); 

function text_exists_on_db($text) { 
    $conn = new PDO($dsn,$user,$pass); 
    $q = $conn->prepare("Select text from texts where text like concat('%', ?, '%')"); 
    $q->execute(array($text)); 
    return $q->fetchAll(\PDO::FETCH_NUM); 
} 

Et le modèle:

{if (in_array('text1', text_exists text="text1"))}