J'ai installé le plugin sfDoctrineGuard
. Tout fonctionne, je peux utiliser la page/sf_guard_user/edit /: id pour éditer un utilisateur. Je n'aimais pas la façon dont les permissions étaient répertoriées dans une liste de sélection, je voulais les afficher en tant que cases à cocher séparées en fonction du nom de la permission. Pour ce faire, j'ai créé un widget personnalisé qui s'étend sfWidgetFormChoice
. Cela fonctionne comme je le veux aussi, mais mon problème est le suivant:symfony override BaseForm class howto
Pour utiliser mon widget personnalisé, j'edited les lignes suivantes dans ce fichier:
lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserForm.class.php
Avant:
'groups_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardGroup')),
'permissions_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardPermission')),
Après:
'groups_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardGroup', 'expanded' => true)),
'permissions_list' => new myCustomPermissionWidget(),
Cela donne le résultat correct. Le problème est que je n'aurais pas dû éditer la classe de base car à chaque fois que je construis mon modèle, le fichier est écrasé.
Je dois modifier ce fichier:
lib/form/doctrine/sfDoctrineGuardPlugin/sfGuardUserForm.class.php
class sfGuardUserForm extends PluginsfGuardUserForm
{
public function configure()
{
parent::configure();
$this->setWidgets(array(
'groups_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardGroup', 'expanded' => true)),
'permissions_list' => new myCustomPermissionWidget(),
));
}
}
Mais cela ne fonctionne pas. J'ai essayé le code dans une nouvelle fonction setup(), avec parent :: setup() avant et après mon code mais toujours rien. PluginsfGuardUserForm est abstrait et étend BasesfGuardUserForm mais je ne vois pas pourquoi cela l'empêcherait de fonctionner.
Des idées?
Merci
Merci pour cela, c'est certainement dans le sens de ce que je cherche, mais je ne peux pas tester pour le moment. En supposant que votre réponse fonctionne, je ne suis toujours pas sûr de savoir pourquoi il existe une classe BasesfGuardUser, puis une classe sfGuardUser. Pour moi, il est absolument logique que mes changements soient dans la classe sfGuardUser, mais cela ne semble pas fonctionner. Il n'a même pas l'air d'être instancié, ce qui pourrait être un problème pour plus tard. – Serg
La classe de base ne doit jamais être touchée. Le pluton utilise le formulaire utilisateur admin pour l'édition dans la zone d'administration. C'est parce qu'il fait ses propres choses je suppose plutôt. Cela signifie que vous devez vraiment apporter des modifications à l'édition de la zone d'administration. – johnwards
Excusez les fautes de frappe, je suis sur mon téléphone ... – johnwards