IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Upload d'image dans l'admin en i18n


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Par défaut Upload d'image dans l'admin en i18n
    Bonjour à tous,

    Je travaille sur l'internationalisation d'un site qui contient des fiches produits. J'en suis à l'admin et tout marche bien sauf pour l'upload des images qui doivent être internationalisée, je n'arrive pas à rendre le form fonctionel.

    Le code du form avant l'internationalisation était comme ça
    Code : 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
     
    class ProductForm extends BaseProductForm
    {
      public function configure()
      {
     
    	$path = DIRECTORY_SEPARATOR.sfConfig::get('app_uploads_shared').DIRECTORY_SEPARATOR.'products'.DIRECTORY_SEPARATOR.$this->getObject()->getId().DIRECTORY_SEPARATOR;
     
    	/* WIDGET */
      	$this->widgetSchema['imgprod_face'] = new sfWidgetFormInputFileEditable(
    		  array(
    		  'file_src' =>$path.$this->getObject()->getImgprodFace(),
    		  'is_image' =>true,
    		  'edit_mode' => !$this->isNew(),
    		  'template' =>'<div>%file%<br />%input%<br />%delete% %delete_label%</div>'
    		  ));
    (...)

    J'ai donc déplacé le widget dans la classe ProductTranslationForm mais cette classe n'a pas accès aux méthodes getId() et getImgprodFace() qui se trouve dans product.class.php, je pensais modifier productTranslation.class.php mais elle n'existe pas. Je dois vraiment être idiot car cela fait un moment que je cherche sur différent forum sans trouver la moindre solution.

    Merci d'avance.

    Lowee

  2. #2
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Juste une question, pourquoi internationaliser l'image du produit ? Elle diffère suivant les pays ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 5
    Par défaut
    Oui l'image représente la boite du produit et doit apparaitre dans la langue choisit par l'utilisateur

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Les deux méthodes que tu cherches à récupérées sont des méthodes liées aux objets du modèle, et là, nous sommes dans des form. Donc, elle ne marches pas. Quoique...

    Première solution : Sauf si tu monte un formulaire indépendant à partir de sfFormSymfony, les formulaires sont monté à partir de classes qui héritent de sfFormObject (en passant en général par sfFormDoctrine). Une fois les données liées dans le construct de la class, il est possible de récupérer l'objet d'origine. Donc on peut récupérer les données de l'objet de départ par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->getObject()->getId()
    . Encore faut-il que la donnée soit dans l'objet. Pour Id, elle doit normalement s'y trouver, pour ImgprodFace cela dépend de ton schéma.

    Deuxième solution : Les données une fois liée ET nécessaire au form (donc déclarée par un widget) se retrouvent dans un tableau interne à l'objet form, il est donc possible de récupérer l'id par un Pour l'autre donnée, même question, où est-elle dans le schéma ?

    Ceci devrait déjà de donner deux bon début de pistes

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 11
    Par défaut Réponse simple mais pas forcement evidente......
    Je sais ça arrive tard mais bon si ça peut aider quelqu'un...
    Il suffit de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $this->getObject()->get('imgprod_face') à la place de $this->getObject()->getImgprodFace()
    et dans la même idée $this->getObject()->get('id') à la place de $this->getObject()->getId()
    Enjoy !!!

Discussions similaires

  1. [Upload] stocker image dans un dossier
    Par niceen dans le forum Langage
    Réponses: 8
    Dernier message: 22/01/2008, 00h51
  2. [Upload] upload d'image dans un input text
    Par visqueu dans le forum Langage
    Réponses: 11
    Dernier message: 18/04/2007, 15h21
  3. uploader une image dans un autre formulaire
    Par jonathan.ohayon dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 03/05/2006, 23h04
  4. [Upload] Insertion image dans mysql après upload
    Par alexmorel dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 23h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo