2017-03-05 125 views
0

我想知道基本的想法準則。如何轉移管理員和管理員的SonataAdminBundle

我現在正在通過SonataAdminBundle管理實體並習慣它。 我想向前邁進。

我想sonataadminbundle

【舉例】

,以使雙方管理和用戶編輯實體我有這樣的表/實體。

Id |User | data 
1 |bear | sarmon 
2 |dog | meat 
3 |monkey| banana 
4 |bear | peanuts 
5 |dog | corn 

當然,我(管理員)可以從SonataAdminBundle的admin_dashboard中編輯實體。

但是我想讓用戶'熊'編輯只有1和4行。

如果我在Controller中從頭開始編輯/更新/列表腳本。 這很容易完成。

但是,我認爲它就像是無用的工作,因爲SonataAdminBundle比我從頭開始有更好的UI。

那麼,有沒有人知道這種想法的適當方式? 或者對於用戶和管理員都使用SonataAdminBundle是個壞主意?


我想讓用戶看到熊只能看到類似的表。

Id |User | data 
1 |bear | sarmon 
4 |bear | peanuts 

起初我與 public function configureListFields(ListMapper $listMapper) 但是這個代碼僅調用一次掙扎。 我找不到正確的答案。

所以我想我需要把這種代碼放在別的地方。

if ($user == bear){ 
array_push($table,$line); 
} 
else { 
} 

回答

1

對用戶和特權用戶同時使用AdminBundle是完全正確的。 您可以輕鬆地詢問管理員是否在用戶當前登錄已被授予編輯行1或4

例如,你可以使用:

protected function configureFormFields(FormMapper $mapper) 
{ 
    /* either identify your custom rows here or via ACL/ROLES */ 
    if (!$this->isGranted('EDIT')) { 
     // not allowed 
    } 
} 

對於安全問題(並根據您的使用請注意,這不會阻止您的非特權用戶顯示/列出這些實體(因爲上面的示例僅覆蓋了窗體/編輯蒙版)。當然,您也可以將邏輯添加到這些方法中。

根據您的安全處理程序,您可以使用symfony(角色,ACL,...)支持的所有內容。 請看看如何根據您的需求配置它:https://sonata-project.org/bundles/admin/3-x/doc/reference/security.html

+0

謝謝你給我基本的想法和保證。我會一步步實施! – whitebear

+0

不客氣:-) –

+0

我已閱讀該文檔。但這是我想要做的一點點。我添加了文章。如果可能的話,你可以幫忙嗎? – whitebear