GetForm, GetItem et plugin PrepareForm

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] GetForm, GetItem et plugin PrepareForm

    Bonjour,

    J'ai remarqué qu'on pouvait compléter l'affichage d'un article avec un onglet supplémentaire en développant un plugin (https://docs.joomla.org/Adding_custo...icle_component).

    L'idée est donc de faire la même chose pour mon composant.

    Coté champ en plus la table dans attribs c'est fait
    Coté affichage de l'onglet c'est bon + affichage des champs + sauvegarde....

    Il me reste un os la lectre de ces données attrbs en vue de les afficher.

    Dans mon fichier model.event.php j'ai
    Code PHP:
    public function getForm($data = array(), $loadData true)
        {
            
    // Get the form.
            
    $form $this->loadForm('com_allevents.event''event', array(
                    
    'control' => 'jform',
                    
    'load_data' => $loadData
                    
    ));
            
            
    // Get the dispatcher.
            
    JPluginHelper::importPlugin('allevents');
            
    $dispatcher JEventDispatcher::getInstance();
            
            
    // Trigger the form preparation event.
            
    $dispatcher->trigger('onAllEventsPrepareForm', array($form$data));
        
            if (
    $form->getFieldAttribute('lastmod''default') == 'NOW')
            {
                
    $form->setFieldAttribute('lastmod''default'date('Y-m-d H:i:s'));
            }

            if (empty(
    $form))
            {
                return 
    false;
            }
            return 
    $form;
        } 
    ce qui me permet d'avoir les nouveaux champs en plus...

    Dans mon fichier model.event.php j'ai modifié GetItem pour charger ma donnée attribs
    Code PHP:
        public function getItem($pk null)
        {
            ...
        
    // Convert the params field to an array.
                
    $registry = new Registry;
                
    $registry->loadString($item->attribs);
                
    $item->attribs $registry->toArray();        
            }

            return 
    $item;
        } 
    Sauf que si je fais un print_r de ma donnée form je retrouve bien : mes données hors le champ attribs, mes champs normaux, mes champs injectés va le plugin qui vont utiliser attribs.Mais je ne retrouve pas ma données attribs :/

    L'un de vous a-t-il déjà mis en oeuvre cela ? car cela ouvre de belle perspective sur le développement d'un composant.

    Manu

  • #2
    Re : GetForm, GetItem et plugin PrepareForm

    en fait la partie appel plugin

    Code:
    // Get the dispatcher.
            JPluginHelper::importPlugin('allevents');
            $dispatcher = JEventDispatcher::getInstance();
            
            // Trigger the form preparation event.
            $dispatcher->trigger('onAllEventsPrepareForm', array($form, $data));
    doit se faire dans la méthode preprocessform...

    çà marche bien mieux comme cela et çà m'ouvre de nouvelles super perspectives !

    Commentaire


    • #3
      Re : GetForm, GetItem et plugin PrepareForm

      Great Manu, belle explication d'astuce dev, merci

      Du coup avec le déplacement dans le preprocessForm() de ton model, est-ce que ca solutionne bien ton prob ?
      Garstud Workshop - Concepteur, Développeur et Formateur Joomla - http://www.garstud.com
      « Ce n’est pas parce que les choses sont difficiles que nous n’osons pas,
      c’est parce que nous n’osons pas qu’elles sont difficiles. »
      - Sénèque

      Commentaire


      • #4
        Re : GetForm, GetItem et plugin PrepareForm

        exactement. et çà ouvre énormément de possibilité

        tu créées un colonne attribs dans ta table + tu écoute l'évt qu'il faut et n'importe qui peut venir ajouter ce qu'il veut dans ton composant.

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X