Forums de discussion

Problème suite à l'ajout d'un radio button

Olivier Lebreton, modifié il y a 7 années.

Problème suite à l'ajout d'un radio button

New Member Publications: 3 Date d'inscription: 10/12/15 Publications récentes
Bonjour,
Suite à l'ajout d'un bouton radio sur un template existant, il n'est plus possible d'invoquer la méthode .getData() sur le composant parent.

Template avant l'ajout du bouton radio (tout fonctionne alors correctement) :

{
	"titre" : "$reserved-article-title.data",
	"titreMoyensContact" : "$htmlUtil.escape($htmlUtil.replaceNewLine($titreMoyensContact.getData()))",
	"blocs" : [
		#foreach ($cur_image in $image.getSiblings())
			{
			    "image" : "$htmlUtil.escape($htmlUtil.replaceNewLine($cur_image.getData()))",
			    "libelle" : "$htmlUtil.escape($htmlUtil.replaceNewLine($cur_image.getChild("libelle").getData()))",
			    "url" : "$htmlUtil.escape($htmlUtil.replaceNewLine($cur_image.getChild("url").getData()))"
	        }
	        #if ($velocityHasNext)
	        	## Ajout de la virgule pour séparer les éléments de mon tableau au cas où il reste des éléments sur lesquels itérer
		 		,
	        #end
		#end
    ]
}


Structure avant l'ajout du bouton radio :

<!--?xml version="1.0" encoding="UTF-8"?-->

<root available-locales="fr_FR" default-locale="fr_FR">
	<dynamic-element datatype="string" indextype="keyword" localizable="true" name="titreMoyensContact" readonly="false" repeatable="false" required="true" showlabel="true" type="text" width="small">
		<meta-data locale="fr_FR">
			<entry name="label">
				Titre Moyens de contact
			</entry>
			<entry name="predefinedValue">
				Une question ? Contactez-nous
			</entry>
			<entry name="tip">
				
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="document-library" fieldnamespace="ddm" indextype="keyword" localizable="true" name="image" readonly="false" repeatable="true" required="true" showlabel="true" type="ddm-documentlibrary" width="">
		<dynamic-element datatype="string" indextype="keyword" localizable="true" name="libelle" readonly="false" repeatable="false" required="true" showlabel="true" type="text" width="small">
			<meta-data locale="fr_FR">
				<entry name="label">
					Libellé
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element datatype="string" indextype="keyword" localizable="true" name="url" readonly="false" repeatable="false" required="true" showlabel="true" type="text" width="small">
			<meta-data locale="fr_FR">
				<entry name="label">
					URL
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<meta-data locale="fr_FR">
			<entry name="label">
				Picto contact (50 x 50 px)
			</entry>
			<entry name="predefinedValue">
				
			</entry>
			<entry name="tip">
				
			</entry>
		</meta-data>
	</dynamic-element>
</root>


Prévisualisation OK :

{ "titre" : "Moyens de contact", "titreMoyensContact" : "Une question ? Contactez-nous", "blocs" : [ { "image" : "/documents/20182/21502/to-be-called.png/42412d84-abac-4746-8d3a-5917e434b334?t=1476954468000", "libelle" : "Appeler un conseiller", "url" : "URL_A_RENSEIGNER", "type" : "externe" } , { "image" : "/documents/20182/21502/call-consulor.png/b729c7b0-f7db-4623-b195-ea279df65253?t=1476954467000", "libelle" : "Etre rappelé par un conseiller", "url" : "URL_A_RENSEIGNER", "type" : "externe" } , { "image" : "/documents/20182/21502/email.png/babe2198-e559-4b71-b7de-c75380f4f43c?t=1476954467000", "libelle" : "Envoyer un e-mail", "url" : "URL_A_RENSEIGNER", "type" : "externe" } ,  { "image" : "/documents/20182/21502/localization.png/e05d39d2-a180-4b77-b779-cd91173e6afd?t=1476954468000", "libelle" : "Localiser mon agence Groupama", "url" : "URL_A_RENSEIGNER", "type" : "externe" } ] } 


Template après l'ajout du bouton radio (fonctionnement anormal) :

{
	"titre" : "$reserved-article-title.data",
	"titreMoyensContact" : "$htmlUtil.escape($htmlUtil.replaceNewLine($titreMoyensContact.getData()))",
	"blocs" : [
		#foreach ($cur_image in $image.getSiblings())
			{
			    "image" : "$htmlUtil.escape($htmlUtil.replaceNewLine($cur_image.getData()))",
			    "libelle" : "$htmlUtil.escape($htmlUtil.replaceNewLine($cur_image.getChild("libelle").getData()))",
			    "url" : "$htmlUtil.escape($htmlUtil.replaceNewLine($cur_image.getChild("url").getData()))",
			    "type" : "$htmlUtil.escape($htmlUtil.replaceNewLine($cur_image.getChild("type").getData()))"
	        }
	        #if ($velocityHasNext)
	        	## Ajout de la virgule pour séparer les éléments de mon tableau au cas où il reste des éléments sur lesquels itérer
		 		,
	        #end
		#end
    ]
}


Structure après l'ajout du bouton radio :

<!--?xml version="1.0" encoding="UTF-8"?-->

<root available-locales="fr_FR" default-locale="fr_FR">
	<dynamic-element datatype="string" indextype="keyword" localizable="true" name="titreMoyensContact" readonly="false" repeatable="false" required="true" showlabel="true" type="text" width="small">
		<meta-data locale="fr_FR">
			<entry name="label">
				Titre Moyens de contact
			</entry>
			<entry name="predefinedValue">
				Une question ? Contactez-nous
			</entry>
			<entry name="tip">
				
			</entry>
		</meta-data>
	</dynamic-element>
	<dynamic-element datatype="document-library" fieldnamespace="ddm" indextype="keyword" localizable="true" name="image" readonly="false" repeatable="true" required="true" showlabel="true" type="ddm-documentlibrary" width="">
		<dynamic-element datatype="string" indextype="keyword" localizable="true" name="libelle" readonly="false" repeatable="false" required="true" showlabel="true" type="text" width="small">
			<meta-data locale="fr_FR">
				<entry name="label">
					Libellé
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element datatype="string" indextype="keyword" localizable="true" name="url" readonly="false" repeatable="false" required="true" showlabel="true" type="text" width="small">
			<meta-data locale="fr_FR">
				<entry name="label">
					URL
				</entry>
				<entry name="predefinedValue">
					
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<dynamic-element datatype="string" indextype="keyword" localizable="true" name="type" readonly="false" repeatable="false" required="true" showlabel="true" type="radio" width="small">
			<dynamic-element name="interne" type="option" value="interne">
				<meta-data locale="fr_FR">
					<entry name="label">
						Interne (page courante)
					</entry>
				</meta-data>
			</dynamic-element>
			<dynamic-element name="externe" type="option" value="externe">
				<meta-data locale="fr_FR">
					<entry name="label">
						Externe (nouvel onglet)
					</entry>
				</meta-data>
			</dynamic-element>
			<meta-data locale="fr_FR">
				<entry name="label">
					Type
				</entry>
				<entry name="predefinedValue">
					["interne"]
				</entry>
				<entry name="tip">
					
				</entry>
			</meta-data>
		</dynamic-element>
		<meta-data locale="fr_FR">
			<entry name="label">
				Picto contact (50 x 50 px)
			</entry>
			<entry name="predefinedValue">
				
			</entry>
			<entry name="tip">
				
			</entry>
		</meta-data>
	</dynamic-element>
</root>


Prévisualisation KO :

{ "titre" : "Moyens de contact", "titreMoyensContact" : "Une question ? Contactez-nous", "blocs" : [ { "image" : "$cur_image.getData()", "libelle" : "Appeler un conseiller", "url" : "URL_A_RENSEIGNER", "type" : "externe" } , { "image" : "$cur_image.getData()", "libelle" : "Etre rappelé par un conseiller", "url" : "URL_A_RENSEIGNER", "type" : "externe" } , { "image" : "$cur_image.getData()", "libelle" : "Envoyer un e-mail", "url" : "URL_A_RENSEIGNER", "type" : "externe" } , { "image" : "$cur_image.getData()", "libelle" : "Localiser mon agence Groupama", "url" : "URL_A_RENSEIGNER", "type" : "externe" } ] } 


"image" retour "$cur_image.getData()" au lieu de l'emplacement de l'image...

Quelqu'un a-t-il déjà rencontré ce type de problème ? (je suis sur une version CE 6.2 GA6)

Merci, Olivier
thumbnail
Eric COQUELIN, modifié il y a 7 années.

RE: Problème suite à l'ajout d'un radio button

Expert Publications: 254 Date d'inscription: 03/11/13 Publications récentes
Bonjour,

Rien qui me saute aux yeux dans le template ou la structure sauf peut-être l'utilisation d'un sous champ "type". Il est à craindre que ce soit un mot clé réservé. Je vous conseille de tester en utilisant une autre variable.

Si cela ne marche pas, essayer de modifier la structure sans le template et voyez ce que ça donne. Mais je pense que c'est bien la modification de la structure qui perturbe Liferay.