Checkbox et Liens externes avec yaml et Symfony

Printer-friendly versionPDF version
Logo SymfonyLogo YAML

Je traiterai ici d'une solution pour ajouter un lien externe qui s'ouvre sur une nouvelle page ainsi que de la manière d'ajouter une case à cocher (checkbox) en utilisant au maximum le fichier de configuration yaml de Symfony.

Ouvrir un lien externe en popup

Dans mon cas, le but sera d'afficher ce lien dans une page de type liste pour chaque ligne de données avec pourquoi pas des informations sur ces données en paramètres.
Pour rappel, l'objectif principal est d'utiliser au maximum la structure yaml de Symfony pour générer automatiquement mes pages.
Le fichier Apps/backend/modules/mapage/config/Generator.yml devrait ressembler à ça :

generator:
  class:              sfPropelAdminGenerator
  param:
    model_class:      MaPage
    fields:
      msg:
        name:       Message
      titre:
        name:      Titre
    list:
      title:          Liste de MaPage
      layout:         tabular
      display:        [=msg, titre]
      object_actions:
        _edit:        {name: modifier}
        _delete:      {name: supprimer}
        lienExterne:     { name: voir, label: voir, type: link_to, action: executeLienExterne, params: popup=true}

et le fichier Apps/backend/modules/mapage/action/actions.class.php :

class mapageActions extends automapageActions
{
    public function executeLienExterne($request)
    {
        $mapage = $this->getMapageOrCreate();
            $this->redirect('http://www.example.com/service.php?msg=' . $mapage->getMsg());
     }
}

Utiliser une checkbox

Le problème avec la checkbox est de pouvoir prendre en compte quand celle-ci est cochée ou non.
On va donc utiliser la propriété checkbox_tag dans le fichier yaml ce qui permettra de générer une case à cocher dans le formulaire de saisie.
Dans le fichier Apps/backend/modules/mapage/config/Generator.yml :

generator:
  class:              sfPropelAdminGenerator
  param:
    model_class: Mapage
    fields:
      msg:
        name:       Message
      macase:
        name:       Garder une trace
        type:         checkbox_tag

Puis dans le fichier d'action, on surcharge la méthode updateMapageFromRequest().
Dans l'exemple ci-dessous, parent::updateMapageFromRequest() permet de laisser symfony s'occuper des autres champs.

class mapageActions extends automapageActions
{
    protected function updatePageparagrapheFromRequest()
   {
       $mapage = $this->getRequestParameter('mapage');
       if (isset($mapage['macase']))
       {
           $this->mapage->setMacase($mapage['macase']);
       }else{
           $this->mapage->setMapage(0);
       }
       // Let symfony handle the other fields
       parent::updateMapageFromRequest();
    }
}

Anonyme's picture

Re: Checkbox et Liens externes avec yaml et Symfony

hhaythem (not verified)
Thu, 22/10/2009 - 17:45

bonsoir,

j'ai crée un object_action "addcomment" dans le
generator.yml et par la suite je ne sais pas quoi mettre au niveau de
la fonction addcomment() dans le fichier action.class.php pour que ce
contrôle ouvre une fenêtre popup pour que je puisse saisir un
commentaire.

merci de votre aide