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_tagPuis 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(); } }



Re: Checkbox et Liens externes avec yaml et Symfony
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