Bonjour � tous,

Le titre pourrai sembler hasardeux alors je vais bien expliquer.

�a me parais pourtant tout simple � faire mais je p�che...

Mon but est de cr�er un petit carousel. On click sur droite-gauche sur une liste d'image et apparait en format �largit l'image point�e.

Le code :

Js / Symphony 2


Ma fonction Php :

Code php : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public function updatePicksAction(){
	try{
		$user = $this->container->get('security.context')->getToken()->getUser();
		// Et pour vérifier que l'utilisateur est authentifié (et non un anonyme)
		if( ! is_object($user) ){
			throw new AccessDeniedException('Vous n\'êtes pas authentifié.');
		}
		$offer = $user->getCompte()->getOffre();
		$listImg = $this->getDoctrine()
			->getRepository('PldOfferBundle:OffreImage')
		    	->findByOffre($offer->getId());
		if($listImg != null){
			$img = $listImg;
		}else{
			$img=null;
		}
		$logger->info('UpdateAccountController - updatePicks ');
	}catch (\Exception $e){
		$info = $e;
		$logger->err('UpdateAccountController - updatePicks : '.$e);
	}
	return $this->render('PldAccountBundle:Compte:updatePicks.html.twig',
		(array('contenu' => $img)));
}

Ma page Twig qui interpr�tera la valeur :

Code html : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{% if contenu %}
<ul id="carrousel" style="list-style-type: none;height:75px;overflow:hidden; max-width:500px; margin:0px; padding:0px;">
	<div class="carrousel-conteneur" id="carrousel-conteneur" style="height:75px; float:left; margin:0px; padding:0px;">
	{% for co in contenu %}
		<li style="display: inline;float:left; margin:0px; width:100px; padding:0px;">
			<img src='{{ asset(co.imagefile) }} title='{{ co.fileName }}' 
				id='{{ co.id }}' style="height:75px; margin:0px">
		</li>
	{% endfor %}
	</div>
</ul>
{% else %}
<ul id="carrousel" style="list-style-type: none;height:75px;">
 	<div class="carrousel-conteneur" id="carrousel-conteneur" style="height:75px; float:left; ">
	</div>
 </ul>
{% endif %}

Cela fonctionne, j'affiche mes images, ok pas de souci.

Maintenant le Probl�me :

JS : j'aimerai manipuler ma liste d'image "Contenu", pour s�lectionner l'image dans mon tableau et l'envoyer en source "src" de mon image �largie.

J'essaye d�j� quelques tests

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function cRight(evt)
{
arr =  {{ contenu }};
	alert("la "+arr.length);
	if({{ contenu|length }} >= (posit + 1))
	{
		posit++;
		alert("ici "+arr);
		for (i in arr) {  
			alert("name : "+arr[i]);
	    } 
$("#img_panel").css("src", ''+arr[posit]['imagefile']+'' );
}
}
- La taillede "arr" vaut 1 (au lieu de 11)
- Le prochain alert affiche "ici function Array() {
[native code]
}"
- On ne rentre pas dans le "for"

Je me dis que �a aurai �t� trop simple -_-.

J'essaye en passant par du Jason, me disant que javascript doit pas capter l'objet php.

Cot� Php je retourne donc en valeur � la place :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
 
...
...
$jsonImg = json_encode($img);
return $this->render('PldAccountBundle:Compte:updatePicks.html.twig',
					(array('contenu' => $jsonImg)));
Hors du coup, mes images ne s'affiche plus cot� client, pourtant si je ne m'abuse, la syntaxe est l� bonne pour ma boucle (for) est l�acc�s au donn�e ("co.fileName"). Je n'ai pas � chang� quoi que ce soit.

Et ma fonction JS

J'ai en r�sultat :
- Taille = 11
- alert : ici [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
- Puis l'it�ration des objets donne : [object Object]

Et si je veut une valeur : arr[i].fileName j'ai en r�sultat : undefined

Donc bon, je me perd et ne saisis plus trop bien.

Avant de venir j'ai trouv� sur ce site :
http://code18.blogspot.fr/2009/01/co...p-en-json.html
la m�me manipulation que j'avais pens� pourtant, quels sont mes erreurs ?
Ais-je int�r�t � m'y prendre d'une autre fa�on ou bien ?

Merci d'avance !