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
- La taillede "arr" vaut 1 (au lieu de 11)
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']+'' ); } }
- 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 :
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.
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)));
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 !
Partager