我已經安裝了sfDoctrineGuard
插件。一切正常,我可以使用/ sf_guard_user/edit /:id頁面來編輯用戶。symfony覆蓋BaseForm類howto
我不喜歡權限被列爲選擇列表的方式,我想根據權限名稱將它們顯示爲單獨的複選框。爲此,我創建了一個擴展爲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(),
這給出正確的結果。
問題是,我不應該編輯基類,因爲任何時候我建立我的模型文件被覆蓋。
所以我應該修改這個文件:
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,但我不明白爲什麼會阻止它工作。
任何想法?
感謝
謝謝你,這絕對是我正在尋找的東西,但我現在無法測試。假設你的答案有效,我仍然不確定爲什麼有一個BasesfGuardUser類,然後是一個sfGuardUser類。對我來說,我的改變絕對是在sfGuardUser類中,但似乎並不奏效。它甚至不像它曾經實例化過的那樣可能是以後的問題。 – Serg 2010-07-03 12:21:01
永遠不要觸摸基礎類。巖體使用admin用戶表單在管理區進行編輯。這是因爲它確實是我自己猜想的東西。這意味着您確實需要對管理區域編輯進行更改。 – johnwards 2010-07-03 19:09:56
原諒任何錯別字,我在我的手機上... – johnwards 2010-07-03 19:10:55