使用SonataAdminBundle表单中的sonata_type_collection禁用“add”

时间:2012-03-13 17:54:20

标签: symfony symfony-sonata

有没有人知道如何摆脱绿色的优势,允许在奏鸣曲管理表单中添加新项目到集合?本机集合类型具有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”不存在'

我还想删除集合中每个项旁边的删除复选框。我认为答案就在于类似的领域。

非常感谢任何协助。

4 个答案:

答案 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');
}