2017-03-05 91 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