php download - Zend Framework comment définir des en-têtes





openclassroom wiki (5)


Vers la fin de la table, je peux recommander cet assistant d’action en tant que composant simple et réutilisable pour envoyer des fichiers ou des données en mémoire au navigateur.

Possède des options pour la mise en cache, la disposition et peut utiliser Apache Sendfile

J'ai une question, comment puis-je faire quelque chose comme ça:

header("Content-Disposition: inline; filename=result.pdf"); 
header("Content-type: application/x-pdf"); 

Avec Zend Framework, j'ai essayé:

        $this->getResponse()
        ->setHeader('Content-Disposition:inline', ' filename=result.pdf')
        ->setHeader('Content-type', 'application/x-pdf');

Mais ne fonctionne pas correctement.

Meilleures salutations,




Je suppose que vous faites quelque chose comme:

$this->getResponse()
        ->setHeader('Content-Disposition:inline', ' filename=result.pdf')
        ->setHeader('Content-type', 'application/x-pdf');
fpassthru($filename);
exit();

ou quelque chose.

La réponse ici ne sera jamais rendue (ce qui rend les en-têtes). La réponse est rendue lors de l'impression post-action, généralement.

Vous devrez définir directement les en-têtes (comme vous l'avez noté dans le code non-oo), ou utiliser directement $this->getResponse()->sendHeaders() .




Résolu

        $this->getResponse()
         ->setHeader('Content-Disposition:inline', ';filename=result.pdf')
             ->setHeader('Content-Type', 'application/x-pdf');



Votre déclaration pour définir les en-têtes de réponse est légèrement mal formée:

$this->getResponse()
     ->setHeader('Content-Disposition', 'inline; filename=result.pdf')
     ->setHeader('Content-type', 'application/x-pdf');

Ce qui précède devrait fonctionner - veuillez noter la différence dans l'en Content-Disposition tête Content-Disposition .

Par ailleurs ... Lorsque vous souhaitez forcer une boîte de téléchargement (au lieu de charger le document dans le navigateur), vous devez utiliser la attachment Content-Disposition .

$this->getResponse()
     ->setHeader('Content-Disposition', 'attachment; filename=result.pdf')
     ->setHeader('Content-type', 'application/x-pdf');

Selon le navigateur, il est possible que vous deviez également définir Content-Length ou changer le Content-type de Content-type en une combinaison (plusieurs en-têtes) d'une ou plusieurs application/force-download , application/octet-stream et / ou application/download . Et comme je l'ai écrit dans le commentaire, les en-têtes de mise en cache peuvent parfois interférer avec votre téléchargement. Vérifiez les en-têtes de cache envoyés.




Etape 1: Choisir le jeu d'attributs La première étape consiste à choisir le jeu d'attributs utilisé comme modèle pour l'enregistrement du produit. Le produit dans cet exemple est basé sur le jeu d'attributs par défaut, qui comprend un ensemble standard de champs pouvant être utilisés pour la plupart des produits.

  1. Dans le menu Admin, accédez à Catalogue> Gérer les produits.

  2. Dans le coin supérieur droit de la page Gérer les produits, cliquez sur le bouton Ajouter un produit.

  3. Dans la section Créer les paramètres du produit, procédez comme suit:

Acceptez le jeu d'attributs "par défaut" ou sélectionnez-en un autre.

Définissez le type de produit sur "Simple" et cliquez sur le bouton Continuer.

Étape 2: Complétez les informations de base L'ensemble de base des champs obligatoires doit être rempli avant que l'enregistrement du produit puisse être enregistré. Le panneau Informations sur le produit regroupe les champs associés par sujet et les champs obligatoires sont marqués d'un astérisque rouge (*).

Dans le panneau Informations sur le produit, sélectionnez Général. Ensuite, remplissez les champs requis comme suit:

  1. Entrez le nom du produit que vous souhaitez voir apparaître dans toutes les listes de catalogues.
  2. Dans la zone Description, entrez la description principale qui apparaîtra sur la page Détails du produit.
  3. Entrez une brève description du produit.
  4. Attribuez une référence unique au produit.
  5. Entrez le poids du produit utilisé pour calculer les frais de port.
  6. Définissez Status sur "Enabled".
  7. Définissez la visibilité sur "Catalogue, Rechercher".

Dans le panneau Informations sur le produit, sélectionnez Prix. Ensuite, remplissez les champs requis comme suit:

  1. Entrez le prix que vous facturerez pour le produit.
  2. Définissez la classe de taxe sur la classification de taxe appropriée pour le produit.

Dans le panneau Informations sur le produit, sélectionnez Inventaire. Ensuite, procédez comme suit:

  1. Si vous n'avez pas besoin de suivre l'inventaire du produit, définissez Gérer le stock sur "Non" (en fonction de la configuration, vous devrez peut-être désactiver la case à cocher Utiliser les paramètres de configuration).
  2. Si vous souhaitez suivre l'inventaire, définissez l'option Gérer le stock sur "Oui". Procédez ensuite comme suit: • Dans le champ Qté, saisissez la quantité de l'article actuellement en stock. • Définissez la disponibilité du stock sur "en stock".

Pour être visible dans votre catalogue, le produit doit être affecté à une catégorie. Pour affecter le produit à une catégorie, procédez comme suit:

  1. Dans le panneau Informations sur le produit, sélectionnez Catégories.
  2. Dans l'arborescence des catégories, cliquez pour développer la section à laquelle appartient l'élément.
  3. Cochez la case de chaque catégorie dans laquelle vous souhaitez voir apparaître le produit.

Si votre installation Magento comporte plusieurs sites Web, le produit doit être attribué à chacun d’entre eux où le produit est disponible à la vente. (Cette option apparaît uniquement si plusieurs sites Web existent dans la hiérarchie du magasin.) Pour configurer la portée du produit, procédez comme suit:

  1. Dans le panneau Informations sur le produit, sélectionnez Sites Web.
  2. Sur l'onglet Sites Web, cochez la case de chaque site Web sur lequel le produit est disponible à la vente.

Après avoir effectué ces étapes, cliquez sur le bouton Enregistrer et continuer. À ce stade, le produit doit être visible sur la page de catégorie assignée de votre catalogue. Tant que l'image du produit n'est pas téléchargée, un espace réservé apparaît à sa place.

Étape 3: Complétez les informations sur le produit restant

Bien que cela ne soit pas obligatoire, il reste encore des informations sur le produit à compléter. Au minimum, vous souhaiterez télécharger des images de produits et compléter les métadonnées. De plus, vous pouvez créer des options personnalisées supplémentaires.





php zend-framework