Forum CMS Made Simple Francophone

Aide francophone sur CMS Made Simple

Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de CMS Made Simple. Nous ne faisons de support que sur LA dernière version de CMS Made Simple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Dans votre CMS utiliser le menu Administration du site/Informations du système en haut Vue au format texte. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 12/03/2017 20:51:17

debutems
Membre
Inscription : 02/03/2017
Messages : 17

[Résolu] Problème Smarty/Back

#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 2.1.2
#~ Url du site :
#~ Hébergeur / Soft : wampserver
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Bonjour à tous,

Je bloque sur un petit problème qui est d'ailleurs lié à Smarty, du coup je viens vers vous afin de savoir si quelqu'un aurait une idée de solution wink

Sur mon fichier .tpl j'ai :

[== HTML ==]
{foreach from=$listfiles key=k item=file } 

    {$file["Key"]} 

   <input type="submit" name="{$actionid}downloadfile" value="{$mod->Lang('download_file')}"/>

{/foreach}

Mon but étant de récupérer sur mon back la value de mon {$file["Key"]} correspondant au submit.

Sur le back :

[== PHP ==]
if(isset($params['downloadfile'])){

}

Pour résoudre ce problème, j'avais dans l'idée d'ajouter un input hidden pour chaque item de mon foreach :

[== HTML ==]
{foreach from=$listfiles key=k item=file } 

      <input type="hidden" name="{$actionid}cache[]" value="{$file['Key']}"/>   

      {$file["Key"]} 

      <input type="submit" name="{$actionid}downloadfile" value="{$mod->Lang('download_file')}"/>

{/foreach}

Le problème étant que je n'ai pas la possibilité de savoir quel est la key "k"... Donc quand dans le back je fais un var_dump($params['cache']); L'ensemble du array s'affiche wink

Merci d'avance pour toutes les réponses qui pourront faire avancer mon schmilblick smile

Dernière modification par debutems (13/03/2017 11:16:59)

Hors ligne

#2 13/03/2017 10:00:08

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

Bonjour,

Te faut-il obligatoirement passer par un formulaire ? Tu peux très bien faire des liens avec {cms_action_url} :

{foreach $listfiles as $k=>$file} 
<a href="{cms_action_url action='NOM_ACTION' file_key=$k}">Télécharger {$file}</a>
{/foreach}

Ou alors j'ai mal compris le but de l'action... peux-tu préciser ton intention dans ce cas ?

Merci et a+

En ligne

#3 13/03/2017 11:16:26

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

Bonjour,

HUM... Merci pour la réponse !!! c'est exactement ce que je cherchais. smile

Je passe le sujet en résolu.

(merci encore)

Hors ligne

#4 13/03/2017 11:59:19

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

Super wink Bonne continuation

En ligne

#5 13/03/2017 17:55:12

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

Juste avant de mettre en résolu, j'ai une mini question wink

Je voulais savoir si c'était possible de mettre un {cms_action_url} dans du jQuery wink

[== HTML ==]
<a class="del_user" href="{cms_action_url action=delete_user hid=$user->id}" title="{$mod->Lang('delete')}">
							

</a>

Par exemple avec ce type de code, j'aimerais l'intégrer dans une balise <td>, mais malgré mes recherches, pas trouvé...

[== JavaScript ==]
/**
 * [sBuildTab create table]
 * @type {String}
 */
var sBuildTab = "";

/**
 * [oDictUser correspond user]
 * @type {[type]}
 */
var oDictUser = oDictionnaryListFile[$id_select_client.val()];

/**
 * [oDictUserWithFeatures correspond features]
 * @type {[type]}
 */
var oDictUserWithFeatures = oDictUser[$id_select_features.val()];

$(oDictUserWithFeatures).each(function(index, value){
	
	sBuildTab += "<tr>";

		sBuildTab += "<td>";
			sBuildTab += value;
		sBuildTab += "</td>";

	sBuildTab += "</tr>";

});

$("#id_tbody_file").empty();
$("#id_tbody_file").append(sBuildTab);

Merci d'avance pour les personnes qui pourront me répondre smile

Hors ligne

#6 13/03/2017 18:27:00

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

Oui c'est possible, et il y a un paramètre "forjs" normalement pour la balise {cms_action_url} - regarde l'aide du plugin (Extensions / Balises , dans l'admin). Tu peux t'en servir pour disposer d'une URL d'action faite pour JS.

En ligne

#7 13/03/2017 19:18:44

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

Merci smile

Je n'avais pas compris qu'il était possible de regarder la doc directement par le back... wink

[== JavaScript ==]
$(oDictUserWithFeatures).each(function(index, value){
	
	sBuildTab += "<tr>";

		sBuildTab += "<td>";
			sBuildTab += value;
		sBuildTab += "</td>";


		sBuildTab += '<td>'; 
			sBuildTab +='<a class="del_file" href={cms_action_url action=delete_file namefile='+value+' forjs=1} title="delete">';
				sBuildTab += '{admin_icon icon="delete.gif"}';	
			sBuildTab += '</a>';
		sBuildTab += '</td>';

	sBuildTab += "</tr>";

});

Néanmoins, lors du retour sur le back, mon params["namefile"] a pour valeur "+value+"... et non la valeur de la variable, ce qui est logique parce qu'un petit coup de F12 me montre bien que la variable n'est pas interprétée...

Je vous embête encore une fois pour savoir si vous auriez une idée pour forcer l'interprétation d'une variable ?

Merci pour les réponses qui me seront apportées smile

Hors ligne

#8 13/03/2017 23:18:00

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 687
Site Web

Re : [Résolu] Problème Smarty/Back

Bonsoir,
Tu dois placer une balise {literal} avant le JS et {/literal} après le JS pour éviter que les accolades ne soit évaluées par Smarty : http://www.smarty.net/docsv2/fr/languag … iteral.tpl

Hors ligne

#9 14/03/2017 09:08:06

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

Il est normal dans ce cas que +value+ soit la valeur car Smarty va interpréter le code, puis le renvoyer au navigateur. Ensuite seulement le JS prend le relais. Smarty est côté serveur, il faut le comprendre comme étant du PHP. Donc la logique n'est pas bonne dans ton code.

Dans ton cas, il faut trouver une astuce pour faire interagir les deux.

La remarque de Jean le Chauve, bien que pertinente de manière générale pour le JS au sein du Smarty, ne s'applique pas pour toi car tu as besoin d'utiliser du Smarty au sein du JS. Il faut juste veiller à ce que les accolades ouvrantes dans ton code JS soient suivies par au moins un espace ou un saut de ligne pour qu'il ne soit pas interprété par Smarty.

Pour ta solution, il faut tenter plutôt quelque chose comme ca :

$url = "{cms_action_url forjs=1 action='delete_file'}"

Puis dans ta boucle :

sBuildTab +='<a class="del_file" href="' + $url + '&cntnt01namefile=' + value + '" title="delete">';

En ligne

#10 14/03/2017 10:00:39

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

airelibre a écrit :
$url = "{cms_action_url forjs=1 action='delete_file'}"

Puis dans ta boucle :

sBuildTab +='<a class="del_file" href="' + $url + '&cntnt01namefile=' + value + '" title="delete">';

La variable $url serait dans mon controller et je l'enverrais sur Smarty avec assign ?

Le problème est qu'il me faudrait {cms_action_url action=delete_file namefile=value forjs=1}, dans votre exemple le namefile est en dehors des "{" "}" du coup je ne peux pas le récupérer avec $params["namefile"] si ?

merci pour toutes les réponses

Hors ligne

#11 14/03/2017 10:08:56

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

Pour la variable $url, elle serait dans le JS. Smarty génère l'URL via {cms_action_url} puis JS la récupère sous forme de chaîne.

Tu peux récupérer ton $params['namefile'] car je l'ai ajouté à la fin de l'URL avec :

$url + '&cntnt01namefile=' + value

En ligne

#12 14/03/2017 10:24:18

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

Vous pensez à quelque chose comme ça ? smile

[== JavaScript ==]
var url = "{cms_action_url action=delete_file forjs=1}";

$(oDictUserWithFeatures).each(function(index, value){

	sBuildTab +='<a class="del_file" href="'+ url + '&cntnt01namefile='+value+'"title="delete">';
		sBuildTab += '{admin_icon icon="delete.gif"}';	
	sBuildTab += '</a>';

});

merci encore pour les réponses, c'est vraiment super d'avoir autant d'aide sur le forum quand on débute smile

Hors ligne

#13 14/03/2017 10:25:17

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

C'est exactement ça - ca fonctionne ? wink

En ligne

#14 14/03/2017 10:32:47

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

Non sad c'est comme si il n'y avait pas de "namefile" dans le href.

J'essaye de voir s'il n'y a pas d'autres solutions sans passer par jQuery.

J'avais pensé créer tout mon tableau et ensuite hide ou show en jQuery ce dont j'ai besoin mais pour ça il faudrait avoir des "class" avec des noms différents selon l'emplacement du dictionnaire, ça me semble hyper fouillis...

Hors ligne

#15 14/03/2017 10:35:41

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

Tu récupères bien l'url dans ton .each ? Après ca devient un problème de JS, donc l'inspecteur de code est ton ami wink Tiens-nous au courant

En ligne

#16 14/03/2017 10:38:25

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

airelibre a écrit :

Tu récupères bien l'url dans ton .each ? Après ca devient un problème de JS, donc l'inspecteur de code est ton ami wink Tiens-nous au courant

Dans mon .each j'ai bien l'url mais pas le "&cntn01namefile" à la suite dans le href ^^

Je vous tient au courant, merci pour les réponses.

Hors ligne

#17 14/03/2017 11:22:15

debutems
Membre
Inscription : 02/03/2017
Messages : 17

Re : [Résolu] Problème Smarty/Back

Merci à tous pour les réponses smile particulièrement à airlibre qui est ultra efficace !

J'ai fait un petit mix de tout, et finalement la solution était de mettre dans une variable l'URL comme l'avait proposé airlibre mais dans la boucle et lui associer directement le "namefile" que je récupère en GET dans le controller smile

Problème réglé !! je lock vraiment le sujet du coup big_smile

Encore merci !

Hors ligne

#18 14/03/2017 14:24:30

airelibre
Administrateur
Lieu : Alsace
Inscription : 01/12/2009
Messages : 1 169
Site Web

Re : [Résolu] Problème Smarty/Back

Super, ravi de t'avoir aidé wink Bonne continuation !

En ligne

Pied de page des forums