FAQ PHP
FAQ PHPConsultez toutes les FAQ
Nombre d'auteurs : 68, nombre de questions : 580, dernière mise à jour : 18 septembre 2021
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.
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 ~).
Ici aussi, seul le fichier de configuration est à modifier :
Ensuite, il vous faut implémenter l'action correspondant à ceci dans votre fichier d'actions :
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.
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:
{}
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 fichiers d'actions :
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és de modifier les enregistrements. Vous en récupérerez toujours les identifiants dans le paramètre ids de la requête.