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

FAQ SymfonyConsultez toutes les FAQ

Nombre d'auteurs : 17, nombre de questions : 81, dernière mise à jour : 18 juin 2017  Ajouter une question

 

Les questions redondantes se multipliant sur le forum Symfony, nous avons choisi de créer cette FAQ afin de regrouper les questions qui sont posées fréquemment.

Vos remarques et idées sont les bienvenues. Et pourquoi pas votre aide ! S'il vous prend l'envie de tailler votre plus belle plume et de retrousser vos manches, il y a de quoi faire !

SommaireSymfony 1Admin Generator sur Symfony 1 (5)
précédent sommaire suivant
 

Il s'agit d'une partie de Symfony qui cherche à simplifier les parties administratives de votre frontend en prenant en charge les pages CRUD (Create, Read, Update, Delete) pour un modèle de données spécifique. Pour avoir votre premier module ainsi généré, il vous suffit de taper une seule ligne de commande ! La voici d'ailleurs :

symfony doctrine:generate-admin application modèle

Où application est l'application à laquelle vous souhaitez ajouter votre module (généralement, backend) et modèle le nom du modèle pour lequel vous souhaitez créer la page.

Vous pouvez aussi spécifier le nom du module qui sera généré :
symfony doctrine:generate-admin --module=module application modèle

Ainsi que le thème, si vous ne souhaitez pas utiliser le thème par défaut (il vous faudra en installer un) :

symfony doctrine:generate-admin --theme=thème application modèle


D'autres options sont disponibles.

Cette commande générera un nouveau module, contenant quatre dossiers : actions, config, lib et templates. La configuration générale se fait dans le dossier config, fichier generator.yml. Ensuite, vous pouvez définir vos propres actions et actions de groupe, qu'il faudra introduire dans le fichier de configuration et implémenter dans le fichier d'actions. Finalement, tous les templates générés par le fichier de configuration peuvent être redéfinis très simplement, il suffit de mettre votre fichier dans ce dossier templates.

Lors du chargement du module, Symfony en achève la préparation (création des actions, des templates, etc.) dans votre dossier temporaire. Vous pouvez aller regarder ces fichiers, ils vous apprendront plus vite que quiconque quel template est à redéfinir pour telle ou telle modification.

Mis à jour le 29 octobre 2015 Siguillaume

Le fichier de configuration du module dont vous souhaitez supprimer les actions est le seul à modifier (vous pouvez aussi redéfinir les templates, mais cette méthode est moins propre et vous expose à divers risques lors de la mise à jour de Symfony, en plus d'une surcharge de travail à la migration vers une version plus récente).

Il suffit d'y mettre ce code :

config:
list:
object_actions: {}

au lieu de :

config:
list: ~

Si vous ne mettez pas les doubles accolades, Symfony considérera que vous souhaitez conserver les paramètres par défaut (ce qu'indique le tilde ~).

Mis à jour le 29 octobre 2015 dourouc05

Ici aussi, seul le fichier de configuration est à modifier :

config:
list:
object_actions:
do: { label: Do, action: do }

Ensuite, il vous faut implémenter l'action correspondant à ceci dans votre fichier d'actions :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
 
public function executeDo($request) 
	{ 
		$q = Doctrine_Query::create() 
			->from('table t') 
			->where('t.id = ?', $request->getParameter('id')); 
		$q = $q->fetchOne(); 
		 
		$q->save(); 
		$this->redirect('module/index'); 
	}
Vous pouvez effectuer n'importe quelle action à cet endroit. Notez simplement que vous récupérez l'identifiant de l'élément sur lequel l'action a été demandée dans le paramètre id de la requête.

Mis à jour le 29 octobre 2015 dourouc05 Siguillaume

Deux solutions s'offrent à vous : une méthode rapide, claire et nette, la modification du fichier de configuration ; une méthode plus lente et plus hasardeuse, le remplacement des templates générés. Seule la première sera évidemment montrée.

Dans le fichier de configuration :

config:
list:
batch_actions: {}

Mis à jour le 29 octobre 2015 dourouc05

Il faut tout d'abord préciser au générateur que vous souhaitez ajouter une action de groupe supplémentaire :

config:
list:
batch_actions:
do: { label: Do, action: do }

Ensuite, il suffit de l'implémenter dans votre fichier d'actions :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
public function executeBatchDo($request) 
	{ 
		$q = Doctrine_Query::create() 
		    ->from('table t') 
		    ->whereIn('t.id', $request->getParameter('ids')); 
		   
		foreach ($q->execute() as $p) 
		{ 
			$p->save(); 
		} 
		 
		$this->redirect('module/index'); 
	}
Vous pouvez évidemment y faire ce que vous souhaitez, vous n'êtes même pas obligé de modifier les enregistrements. Vous en récupérerez toujours les identifiants dans le paramètre ids de la requête.

Mis à jour le 29 octobre 2015 dourouc05 Siguillaume

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2021 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.