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

Zend Framework PHP Discussion :

ZF2 Serialize \Zend\Form\ElementInterface


Sujet :

Zend Framework PHP

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut ZF2 Serialize \Zend\Form\ElementInterface
    Bonjour à tous...

    Grosse interrogation de ma part... je galère vraiment...

    Comment sérialisé un élément de type \Zend\Form\ElementInterface ?

    J'ai ce message :
    Serialization of 'Closure' is not allowed
    Car en effet, ZF2 et Doctrine me mettent des objets dans mes objets qui ont des Closures... du coup impossible de tous les détecter pour les sérialiser via SuperClosure...
    (En plus je travaille dans un foreach $element de type \Zend\Form\ElementInterface qui sont souvent étendu en type Select/Radio... donc jamais les mêmes data...)

    Vous avez une méthode "magique" ? ou faut il que je galère à décortiquer mon objet pièce par pièce, le sérialiser, puis ensuite le reconstruire ?

    D'avance merci,
    Je galère vraiment.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    pas de soluce simple,
    le problème vient du fait que la sérialisation de closure n'est possible que si et seulement si ils n'embarquent aucune référence directe à une instance.
    ceci n'est pas sérialisable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function foo()
    {
        return function() { ...; $this->bar(); };
    }
    par contre ceci passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function foo()
    {
        $bar = $this->bar();
        return function() use ($bar) { ...; $bar; };
    }
    Je ne sais pas si je suis très clair

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut
    J'ai un superSerializer pour serializer les Closures.
    Le problème, c'est qu'il y en a tellement... dans l'objet ElementInterface, et les sous objets de ce même objet que c'est super galère à trouver...

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 44
    Par défaut
    C'est bon, j'ai trouvé la solution... long et compliqué... mais très utile pour la compilation de formulaire complexe optimisée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Zend Form] Traduction des messages d'erreur
    Par Coyote Terrorist dans le forum Zend_Form
    Réponses: 8
    Dernier message: 01/08/2011, 19h33
  2. [ZF 1.7] Zend Form Decorator MultiCheckBox
    Par manuscle dans le forum Zend_Form
    Réponses: 15
    Dernier message: 30/09/2010, 21h58
  3. Zend Form MultiCheckbox
    Par d4d4++ dans le forum Zend_Form
    Réponses: 1
    Dernier message: 07/11/2008, 12h12
  4. populate zend form element select
    Par MaitrePylos dans le forum Zend_Form
    Réponses: 1
    Dernier message: 21/07/2008, 19h56
  5. Mise en forme en tableau d'un Zend Form
    Par ZIED dans le forum Zend_Form
    Réponses: 1
    Dernier message: 20/06/2008, 23h29

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