Mic*_*ael 8 symfony sonata-admin sonata
我在SonataAdminBundle中使用ACL时安装了SonataAdminBundle,SonataUserBundle和FOSUserBundle以及CoopTilleulsAclSonataAdminExtensionBundle.
所有者过滤列表,一切都很好.顾客A只能看到他的物品,顾客b也只能看到他的物品.但是,如果我要创建一个新对象,我也可以看到其他客户的项目.
让我们说客户可以创建用于分配产品的组.这是在将产品创建为下拉列表(产品视图中的多对一关系)时完成的.但我也可以看到由其他客户创建的群组.
我怎么过滤这个?我想我必须在ProductsAdmin.php中进行任何过滤.或者它必须发生在ProductsRepository.php中吗?到目前为止,我在文档中找不到任何提示,并且会在任何类型的提示或链接中找到我可以找到的信息.
小智 0
您需要覆盖编辑树枝模板或创建自定义选择框。请参阅有关覆盖的问题。我不知道你的实体结构,但过程应该是这样的
{% for object in objects %}
{% if owned by this user flag display %}
{{object}}
{% endif %}
{% endfor%}
Run Code Online (Sandbox Code Playgroud)
管理类中的自定义选择查询,例如
$em = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager');
$user = $this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser();
$query = $em->createQueryBuilder('p')
->select('p')
->from('MyBundle:Product', 'p')
->where('p.user = :user')
->setParameter('user', $user);
$formMapper
...
->add('categoria', 'sonata_type_model', array(
'required' => true,
'query' => $query
))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
191 次 |
| 最近记录: |