Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous!
Cela fait déjà 3 mois que j'ai débuté avec zend framework 2 (2.2.3) et je suis en stage.
Par rapport à mon problème , j'ai eu à voir certain post mais qui m'éclairaient pas. Voici mon problème:
Selon la tâche qui m'a été remise, sur ma première page je faisais plutôt des injections avec Ajax, voila que en créant un nouveau module "Profils" ou je n'utilise pas d'injections ( doc pas besoin de setTerminal(true)), à la création de ma deuxième page "mes comptes bancaires"; celui ci n'affiche pas les image ou disant qu'il n'accède pas au dossier publique. Lorsque je remplace l'action par défaut par l'action devant appelé ma page, les images s'affiche; Lorsue j'écrie une balise <img comme suite: " <img src="<?php echo $this->basepath(); ?>/img/ebanking_img_3.png">; là aussi les images s'affiches. Donc impossible pour moi de référencer les image relativement.
Voici ma route:
'Site' => array ( 'type' => 'Segment', 'options' => array ( // 'route' => '/site[/:action]', 'constraints' => array ( ), 'defaults' => array ( // '__NAMESPACE__' => 'Front\Controller', 'controller' => 'Profils', 'action' => 'index' ) ) ),
Voici mon action:
public function mesComptesAction(){ try { $session = new SessionContainer('user'); $reader = new readerXML(); $data = $reader->fromFile('config/configsXML.xml'); $config = new Configs(); $config->exchangeArray($data); if($session->offsetExists('userId')) { $personne = $this->getPersonneTable()->getPersonne($session->userId); $comptes = $this->getComptesTable()->getMesComptes($personne->id); $view = new ViewModel(array( '$personne' => $personne, 'comptes' => $comptes )); $enteteView = new ViewModel(array( 'personne' => $personne )); $enteteView->setTemplate('layout/entete-site'); $view->addChild($enteteView,"entete_site"); return $view; } else { unset($_SESSION['user']); $this->redirect()->toRoute('home'); } } catch(\Exception $ex){ // Erreur 404 } }
et voici ma vue:
<?php $this->headtitle('Mes comptes'); ?> <?php if(isset($this->entete_site)) : ?> <?php echo $this->entete_site; ?> <div id="pagebody"> <div class="content"> <div id="bloc-left"> <div id="main-menu"> <a href="<?php echo $this->url('Site'); ?>">Accueil</a> <a href="<?php echo $this->url('Site',array('action' => 'mesComptes')); ?>" class="actif">Mes comptes bancaires</a> </div> <hr class="trait" /> </div> <div id="bloc-center"> <div id="titrebody"><h1>Mes comptes</h1></div> <div> <label style="position: relative; bottom:10px;">Compte courant</label> <div class="interogation"> <div>Veuillez choisir un de vos comptes bancaires<span></span></div> </div> <select name="comptecourant" id ="comptecourant"> <option value="" selected="selected">Choisir un compte</option> <?php $comptes = $this->comptes; foreach ($comptes AS $row) { echo '<option value='.$row->id.'>'.$row->numero.'</option>'; } ?> </select> </div> <hr class="trait" /> <div id="detailscompte" style="display: none;"> </div> </div> <!-- Début bloc droit --> <div id="bloc-right"> <h1>Publicité</h1> </div> </div> </div> <?php endif; ?>
Vraiment! Je ne sais pas d’où viens le problème, c'est la première fois que je le rencontre! Merci pour vos réponses.
Cordialement.
Hors ligne
Salut, honnêtement j'ai absolument rien compris à ton problème ... Peux-tu faire un effort sur ta syntaxe ?
Hors ligne
Désolé si je n'arrive pas à bien m'expliquer c'est que les forums c nouveau pour moi.
ok, j'ai un controller Profils, son action par défaut est index. Lors de l'appel de la view index. les images sont charger et je peut les voir. Mais si j'appelle une une autre action du même controller; ben la plus rien, tous les mages ne s'affiche pas. sans oublier que j'appelle ces action depuis la même route. Il faut aussi noter que ci je remplace l'action par défaut de la route par celle que je veux appeler, alors là les images s'affiche.
Je ne sais pas si j'ai bien expliqué mon problème cette fois ci, j'ai fait de mon mieux.
Hors ligne
A partir du moment où t'es dans une vue et que les images sont stockées dans le dossier public tu peux y accéder sans soucis. Donc tu ne devrais pas avoir ce problème.
Tu peux tester un truc du genre <?php echo $this->basePath('tonurl'); ?>
Hors ligne
Effectivement avec cela sa marche sauf que j'utilise un tableau Database et celui à pour feuille de style celui de jquery ui. Je n'ai pas de moyens pour réécrire les liens des styles. Ce pendant, lorsque mon action est mis par défaut dans la route, mon tableau ainsi que mes images s'affiche bien. Franchement je ne sais pas le pourquoi du problème. A mon vis, je pense avoir tous respecter.
Je viens de créer une nouvelle route juste pour cette page afin que son action soit l'action par défaut et la sa marche.
J'aimerai bien comprendre le pourquoi de ce problème
Hors ligne
Ca n'a pas de rapport avec l'action par défaut ou non. Et j'ai énormément de mal à comprendre ce que tu dis. Donc fais un effort là dessus parce que sans ça je vais pas pouvoir t'aider ...
Hors ligne
Effectivement, c'est pas facile car cela m'est incompréhensible à moi même. En tous cas lorsque que j'ouvre cette page avec un inspecteur de code et que je clique sur le lien de l'image, il me renvoie une page 404 au lieu de l'image.
en tout cas j'avance d'abord et je continue à chercher
Hors ligne
Si l'image s'affichait tu n'aurais pas de 404 . Regardes le chemin de l'image voir si il est bon déjà !
Hors ligne
voici le lien afficher pour le cas de l'erreur img/img_site_name.png. Ce qui est étonnant c'est que c'est le même liens que pour les autres pages qui marchent.
Mais si je met un truc du genre <?php echo $this->basePath(); ?> avant le lien, l'image s'affiche. je me demande si le fichier .htaccess n'est pas à l'origine de cela. Certe je m'y connais pas en htaccess mais cette ligne m'intrigue : RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
Hors ligne
Ca vient pas du fichier .htaccess puisque ça fonctionne dans certains cas. Tu as fait un virtualhost déjà ? Le chemin complet de l'image ça serait plus simple .
Hors ligne