[résolu] Mapping d'image sous Zend

Mapping d'image sous Zend [résolu] - PHP - Programmation

Marsh Posté le 29-10-2013 à 08:10:05    

Bonjour,
 
Toujours dans le cadre de mon projet, je cherche à appeler une image par le biais de mon controlleur.
 
 

Code :
  1. class PictController extends Zend_Controller_Action
  2. {
  3.     public function indexAction()
  4.     { 
  5.      $objpict = new Application_Model_Page();   
  6.      $objpict->CheminPictures(Application_Model_String::ExtractNamePict($this->getParam('niveau0')));   
  7.      $this->_helper->viewRenderer->setNoRender(true);
  8.      $this->_helper->getHelper('layout')->disableLayout();
  9.      header('Content-Type: image/jpeg');
  10.      header('Content-Length: ' . filesize($file));
  11.      echo file_get_contents($file);
  12.      exit;   
  13.    
  14.     } 
  15.    
  16. }


 
Seulement je ne sais plus comment procéder afin d'appeler ce controlleur depuis ma vue afin qu'il me renvoie l'information.
Ceci me renvoie le nom de la page dans laquelle je suis et pas le controlleur !
 

Code :
  1. <img alt="montitre" src="<?php echo $this->url(array('controller' => 'pict', 'action' => 'index')); ?>" >


 
 
 
Une route à été crée également, mais elle n'est pas prise en compte non plus !
 
 

Code :
  1. $routeRegex = new Zend_Controller_Router_Route_Regex(
  2.    'img/([a-z-0-9-/-]+).jpg',
  3.    array('controller' =>'pict','action' => 'index'),
  4.    array(1 => 'niveau0',2 => 'niveau1',3 => 'niveau2'),'img/%s.jpg');
  5.  $this->_routeur->addRoute('routeimage', $routeRegex);


 
 
 
Une idée comment faire ? :)
 
D'avance merci
++


Message édité par cvb le 30-10-2013 à 19:29:54
Reply

Marsh Posté le 29-10-2013 à 08:10:05   

Reply

Marsh Posté le 30-10-2013 à 13:59:44    

Personne ne sait sous Zend comment on fait pour appeler un contrôleur depuis une vue ?

Reply

Marsh Posté le 30-10-2013 à 16:43:10    

Problème résolu :
 
Le but :
 
Mettre les images dans un autre endroit que dans le dossier public de Zend et ne pas avoir à mettre un nom SEO pour chacun des images.  
L'idée étant de mappé le noms des images réel au nom virtuel...
 
Afficher l'image
 
Mettre un chemin virtuel dans la balise img.  
Aucun dossier n'existe, on peut mettre n'importe quel arborescence.
 

Code :
  1. <img src="<?php
  2.  echo $this->url(
  3.   array( 'niveau0'=>'img/maison/jardin.jpg')
  4.  ,false,false,false) ?>" />


 
 
Comment trouve t-il la bonne image ?
 
Une route à été crée pour rediriger la requête vers le bon controller et la bonne action.
 
 

Code :
  1. $routeRegex = new Zend_Controller_Router_Route_Regex(
  2.    'img/([a-z-0-9-/-]+).jpg',
  3.    array('controller' =>'pict','action' => 'index'),
  4.    array(1 => 'niveau0',2 => 'niveau1',3 => 'niveau2'),'img/%s.jpg');
  5.  $this->_routeur->addRoute('routeimage', $routeRegex);


 
 
 
Coté Controller
 
Le controller reçoit le paramètre passé - GetParam("niveau0" ) - et me renvoie le file_get_contents de l'image.  
Le vrai chemin de l'image fut trouvé en le recherchant en base...
 
 

Code :
  1. class PictController extends Zend_Controller_Action
  2. {
  3.     public function indexAction()
  4.     {     
  5.    
  6.      $objpict = new Application_Model_Page();   
  7.      //var_dump($this->_getAllParams());       
  8.      $file = 'images/bx3.jpg';
  9.      //$objpict->CheminPictures(Application_Model_String::ExtractNamePict($this->getParam('niveau0')));
  10.    
  11.      $this->_helper->viewRenderer->setNoRender(true);
  12.      //$this->_helper->getHelper('layout')->disableLayout();
  13.      /*$file = 'pict/M2DR4003.jpg';*/
  14.      header('Content-Type: image/jpeg');
  15.      header('Content-Length: ' . filesize($file));
  16.      echo file_get_contents($file);
  17.      exit;
  18.    
  19.     }
  20.    
  21.    
  22. }


 
 
Conclusion
 
Avec cette méthode, vous pouvez crée des dossier virtuel, crée des noms virtuel d'image et renvoyé au visiteur la vrai image.  
Il vous faut juste une base de données pour faire la relation entre le nom virtuel que vous donnez et le nom réel de l'image...
 
Requête inutile en base de données ? Oui surement.  
Qu'est-ce qui empêche la mise en cache du chemin réel de l'image ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed