有没有人知道如何摆脱绿色的优势,允许在奏鸣曲管理表单中添加新项目到集合?本机集合类型具有allow_add& allow_delete,但是sonata_type_collection似乎没有注意到这些选项。
我尝试了以下内容:
->add('store_orders', 'sonata_type_collection', array(), array(
'type_options' => array('allow_add' => false),
))
没有效果
->add('store_orders', 'sonata_type_collection', array(
'allow_add' => false
))
给出错误'选项“allow_add”不存在'
->add('store_orders', 'sonata_type_collection', array(
'type_options' => array('allow_add' => false)
))
也会出现错误'选项“allow_add”不存在'
我还想删除集合中每个项旁边的删除复选框。我认为答案就在于类似的领域。
非常感谢任何协助。
答案 0 :(得分:10)
试试这个
->add('store_orders', 'sonata_type_collection', array(
'btn_add' => false
))
当您向Sonata管理表单添加集合时,默认情况下会显示“添加新”按钮,以防止显示“添加新”按钮或“+”,将数组中的add_btn键设置为FALSE,是add函数中的第三个参数。
答案 1 :(得分:1)
我对SonataAdminBundle并不是很了解,但有两种选择可供选择。
首先使用类型集合而不是sonata_type_collection。 我不确定这个改变的结果是什么,但你可以给它一个bash,看看会发生什么。
另一个选项是使用您自己的模板覆盖模板。
复制
src\bundles\Sonata\AdminBundle\Resources\views\Form\form_admin_fields.html.twig
到
app\Resources\SonataAdminBundle\views\Form\form_admin_fields.html.twig
然后删除
部分{% if allow_add %}
或者你可以致电
{% extends "SonataAdminBundle:Form:form_admin_fields.html.twig %}
只需更改{%block collection_widget%}
即可我确信有更好的方法来实现这一点,但我仍然是一个Symfony2菜鸟,这是我能想到的唯一方法。
答案 2 :(得分:0)
编辑: 试试吧
->add('store_orders', null)
而不是
->add('store_orders', 'sonata_type_collection', array(
'allow_add' => false
))
Sonata为对象提供以下ROLE based access: -
ROLE_SONATA _... GUEST:允许查看对象的访客和 对象列表; ROLE_SONATA _..._工作人员:可能是最重要的部分 用户,员工用户具有与客人相同的权限 另外允许编辑和创建新对象; ROLE_SONATA _...编辑器:编辑器被授予所有访问权限并进行比较 给员工用户,允许DELETE和EXPORT
ROLE_SONATA _..._ ADMIN:授予管理用户所有访问权限 最重要的是,允许用户授予其他用户访问权限。
以下访问控制很可能会分配给您的用户,其角色为STAFF(已登录Sonata Admin)
'ROLE_.._NAME__EDIT',
'ROLE_.._NAME__LIST',
'ROLE_.._NAME__CREATE',
'ROLE_.._NAME__VIEW',
'ROLE_.._NAME__DELETE',
'ROLE_.._NAME__OPERATOR',
'ROLE_.._NAME__MASTER',
将为每个班级分配这些角色。
如果你想摆脱“绿色优势”,你只需要删除相应管理员实体的角色 - 'ROLE _ .. NAME _CREATE'。
如果您遇到问题,请参阅documentation的这一部分。
答案 3 :(得分:0)
1)您实际上可以创建模板扩展,然后仅将其用于特定字段,因此您不会在所有情况下都覆盖默认模板。
如果你想这样做,基本上你想要创建一个像上面建议的user1207727这样的新模板,确保扩展你想要的模板:
{% extends "SonataAdminBundle:Form:form_admin_fields.html.twig %}
然后将其包含在您的表单中,仅包含要删除添加按钮的字段:
$listMapper
->add('custom', 'string', array('template' => 'YourBundle:YourDirectory:your_template.html.twig'))
上面的代码显示"显示此字段的list_custom.html.twig模板"。默认模板将用于您未指定模板覆盖的所有情况。
请参阅此代码以获取更多示例: https://github.com/sonata-project/SonataMediaBundle/blob/2.0/Admin/BaseMediaAdmin.php
2)根据这篇文章:http://groups.google.com/group/sonata-users/browse_thread/thread/6a94d662c8a6a17f你也可以删除路线以删除添加按钮。我没试过这个,所以我不确定它是否有效。
configureRoute(RouteCollection $collection) {
$collection->remove('edit');
}