我已经安装了sfDoctrineGuard
插件。一切正常,我可以使用 /sf_guard_user/edit/:id 页面来编辑用户。
我不喜欢将权限列为选择列表的方式,我想将它们显示为根据权限名称拆分的单个复选框。为此,我创建了一个扩展的自定义小部件sfWidgetFormChoice
。这也是我想要的方式,但我的问题如下:
为了使用我的自定义小部件,我在此文件中编辑了以下几行:
lib/form/doctrine/sfDoctrineGuardPlugin/base/BasesfGuardUserForm.class.php
前:
'groups_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardGroup')),
'permissions_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardPermission')),
后:
'groups_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardGroup', 'expanded' => true)),
'permissions_list' => new myCustomPermissionWidget(),
这给出了正确的结果。
问题是我不应该编辑 Base 类,因为任何时候我构建我的模型文件都会被覆盖。
所以我应该编辑这个文件:
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(),
));
}
}
但这不起作用。我已经尝试了新函数 setup() 中的代码,在我的代码之前和之后使用 parent::setup(),但仍然没有。
PluginsfGuardUserForm 是抽象的并扩展了 BasesfGuardUserForm 但我不明白为什么这会阻止它工作。
有任何想法吗?
谢谢