2010-03-31 13 views
0

je veux juste une action pour imprimer une image de code à barres, mais je ne peux pas obtenir ce travail dans MVC, je viens de faire ce qui suit:Zend_Barcode dans MVC

public function barcodeAction() { 
    $this->_helper->layout->disableLayout(); 
    $this->_helper->viewRenderer->setNoRender(); 
    Zend_Barcode::render($_GET['barcodeType'], 'image', $_GET, $_GET); 
} 

mais quand je l'appelle

/barcode?barcodeType=code39&text=ZEND-FRAMEWORK 

Je viens d'obtenir: "L'image n'a pas pu être affichée parce qu'elle a des erreurs" (ou quelque chose comme ça, dépendant du navigateur). Merci!

Répondre

0

Vous obtiendrez probablement une erreur que vous ne pouvez pas voir en raison de l'en-tête Content-Type qui est envoyé par Zend_Barcode. Assurez-vous que vous avez activé log_errors et une destination valide/inscriptible pour le journal configuré. De cette façon, vous pouvez vérifier le journal des erreurs pour tout ce que vous auriez normalement lu dans votre navigateur.

http://us3.php.net/manual/en/errorfunc.configuration.php#ini.log-errors

+0

merci, mais Zend_Barcode définit correctement le type de contenu à image/png comme y Vous pouvez voir dans http://online.cooprc.com.ar/facturas/codigo/factura/0001-01249361/para/PF, mais cela semble se produire uniquement dans le MVC, car l'appel de cette seule ligne: "Zend_Barcode :: render ($ _ GET ['barcodeType'], 'image', $ _GET, $ _GET); "dans un fichier dans le dossier public fonctionne comme un charme ... comme vous pouvez le voir dans http://online.cooprc.com.ar/barcode.php?text=90000101249361 Merci! –

+0

Avez-vous vérifié votre erreur J'ai mentionné que le 'Content-Type was' défini par' Zend_Barcode', ce qui signifie que le navigateur s'attend à des données d'image.Si PHP envoie un message d'erreur de chaîne au navigateur, le navigateur le considérera comme corrompu image (qui provoquera le message que vous avez mentionné dans votre question), puisqu'elle attend une image (basée sur le 'Content-Type') et non des données de chaîne Vous pouvez corriger cela en disant à PHP de ne pas afficher d'erreurs mais de se connecter à un fichier à la place, de cette façon, vous pouvez comprendre ce qui se passe. (Voir les liens ci-dessus dans ma réponse originale) – awgy

0

Je n'ai aucun problème avec votre code, j'appelle cette url: http://localhost/index/barcode?barcodeType=code39&text=ZEND dans mon navigateur (votre code est dans le IndexController) et je reçois l'image correcte.

Si je mets <img src="http://localhost/index/barcode?barcodeType=code39&text=ZEND" /> dans une vue, j'ai aussi l'image.

Mickaël

0

Je sais que cela peut être dépassé maintenant, mais quand j'ai eu le même problème que je viens d'ajouter

ob_clean(); 

dans mon contrôleur maintenant mon action se présente comme suit

public function generateBarcodeAction() { 
    ob_clean(); 
    $number = $this->params()->fromRoute('number'); 
    $barcodeOptions = array('text' => $number); 
    $rendererOptions = array('imageType'=>'png'); 
    Barcode::render(
      'ean13', 'image', $barcodeOptions, $rendererOptions 
    ); 
} 

et cela fonctionne comme un charme