當使用sfDoctrineGuard插件時,它會自動生成後端管理功能,我可以在其中編輯系統用戶併爲其分配權限。Symfony sfDoctrineGuard插件sfGuardUser模塊
因此,我訪問http://.../backend_dev.php/sf_guard_user/:id/edit
,其中提供了用戶信息,包括可供選擇的權限。
默認權限都顯示爲一個多選框,HTML如下:
<select name="sf_guard_user[permissions_list][]" multiple="multiple" id="sf_guard_user_permissions_list">
<option value="1">Permission1</option>
<option value="2">Permission2</option>
<option value="3">Permission3</option>
<option value="4">Permission4</option>
</select>
我寧願是一個複選框列表。所以,我搜索了一圈,發現如果我添加「擴展」選項設置爲true,下面的代碼:
'permissions_list' => new sfWidgetFormDoctrineChoice(array('multiple' => true, 'model' => 'sfGuardPermission', 'expanded' => true,)),
的代碼是這個文件的一部分:LIB /表格/教義/ sfDoctrineGuardPlugin /基/ BasesfGuardUserForm。 class.php。我不認爲我應該編輯這個文件(如果sfDoctrineGuard被重新安裝,潛在的改變被覆蓋),但想不到另一種方式使它工作。
生成的HTML如下:
<ul class="checkbox_list">
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="1" id="sf_guard_user_permissions_list_1" /> <label for="sf_guard_user_permissions_list_1">Permission1</label></li>
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="2" id="sf_guard_user_permissions_list_2" /> <label for="sf_guard_user_permissions_list_2">Permission2</label></li>
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="3" id="sf_guard_user_permissions_list_3" /> <label for="sf_guard_user_permissions_list_3">Permission3</label></li>
<li><input name="sf_guard_user[permissions_list][]" type="checkbox" value="4" id="sf_guard_user_permissions_list_4" /> <label for="sf_guard_user_permissions_list_4">Permission4</label></li>
</ul>
我現在需要做的是分裂根據自己的前綴的權限。例如,如果我有權限命名user_action1,user_action2,file_action1,file_action2,他們會顯示一個類似:
User
checkbox (custom label) Action One
checkbox Action Two
File
checkbox (custom label) Action One
checkbox Action Two
,但不知道從哪裏開始與此有關。如果有一個模板可以編輯,那很容易,但由於我正在處理Forms框架,因此我的理解是模板是即時生成的 - 我可以在我的symonfy緩存文件夾中看到它們。
我該怎麼辦?
我開始編寫自己的sfWidgetFormDoctrineChoicePermission類,該類擴展了與sfWidgetFormDoctrineChoice相同的類,但我正努力爲所需的輸出正確編輯渲染函數。這是完成這項工作的正確方法嗎?
我還需要將我的sfGuardUserProfile模型集成到編輯用戶頁面(與上面相同),我讀somwhere編輯sfGuardUser插件模塊的generator.yml文件,並簡單地添加sfGuardUserProfile表中的字段名稱將使它的工作,但可悲的是它沒有。