2016-12-05 2 views
0

Je veux archieve les suivantes:Smarty: Implode un tableau et l'affecter à un var

« Je suis une phrase descriptive »

Je l'ai mis dans un tableau (pour créer des mots-clés pour meta tags) via:

[{assign var='meta_key_arr' value=' '|explode:$oEntry->FCLONGDESC_1}]     

qui fonctionne jusqu'à présent. Mon résultat est un tableau comme ça:

array([I],[am],[a],[descriptive],[sentence]) 

L'objectif est d'obtenir une chaîne comme ça « I, am, un descriptif, phrase »

Je voulais faire imploser le tableau séparé par une virgule: [{',' | implode: $ meta_key_arr}]

Cela fonctionne très bien, mais je veux assigner les valeurs à une autre variable $ meta_key. Ce qui ne marche pas. J'ai lu le manuel mais la seule chose que j'ai pu trouver était la syntaxe ci-dessus.

[{assign var='meta_key' value=' '|', '|implode:$meta_key_arr}] 

ne fonctionnait pas. Et cela n'a pas fonctionné non plus.

[{assign var='meta_key' value=' ' ', '|implode:$meta_key_arr}] 

Comment utiliser la fonction implode correcte? Il y a un moyen beaucoup plus facile à coup sûr.

+1

Il est beaucoup plus simple de traiter des données dans un contrôleur. –

+0

@u_mulder Je suis très nouveau à smarty. En fait, je tente d'erreur. Mais je connais PHP. –

+0

Smarty est un moteur de template. Cela signifie simplement __outputs__ data. C'est pourquoi vous devez préparer vos données dans un contrôleur –

Répondre

0

La solution:

[{foreach from=$meta_key_arr item=mkey}] 
    [{assign var='meta_key' value=', '|implode:$meta_key_arr}] 
[{/foreach}] 
0

Pourquoi ne pas simplement utiliser la chaîne d'origine et remplacer les espaces par des virgules?

[{assign var='meta_key' value=$oEntry->FCLONGDESC_1|replace:' ':', '}]