Отключить «добавить» с sonata_type_collection в формах SonataAdminBundle - PullRequest
3 голосов
/ 13 марта 2012

Кто-нибудь знает, как мне избавиться от зеленых плюсов, которые позволяют добавлять новый элемент в коллекцию в формах администратора сонаты?У нативного типа коллекции есть 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 ]

10 голосов
/ 05 мая 2014

Попробуйте это

->add('store_orders', 'sonata_type_collection', array(
      'btn_add' => false
    ))

Когда вы добавляете коллекцию в формы администратора Sonata, по умолчанию отображается кнопка «Добавить новый», чтобы не отображать кнопку «Добавить новый» или «+»,установите для ключа add_btn значение FALSE в массиве, которое является третьим параметром в функции добавления.

1 голос
/ 13 марта 2012

Я не очень разбираюсь в SonataAdminBundle, но на ум приходят два варианта.

Сначала следует использовать коллекцию типов вместо sonata_type_collection. Я не уверен, что результаты будут с этим изменением, но вы можете дать ему некоторое представление и посмотреть, что произойдет.

Другой вариант - переопределить шаблон одним из ваших.

Копирование

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, и это единственный способ, которым я могу думать.

0 голосов
/ 01 мая 2012

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');
} 
0 голосов
/ 04 апреля 2012

Редактировать: просто попробуйте

->add('store_orders', null)

вместо

->add('store_orders', 'sonata_type_collection', array(
      'allow_add' => false
    ))

Соната предоставляет следующие ROLE-основанные права доступа к объектам: -

ROLE_SONATA _..._ GUEST: гость, которому разрешено просматривать объект и список объектов;ROLE_SONATA _..._ STAFF: вероятно, большая часть пользователей, штатный пользователь имеет те же права, что и гости, и ему дополнительно разрешено редактировать и создавать новые объекты;ROLE_SONATA _..._ РЕДАКТОР: редактору предоставлен весь доступ, и, по сравнению с сотрудниками, ему разрешено УДАЛИТЬ и ЭКСПОРТИРОВАТЬ

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',

Эти роли будут назначены для каждого класса.

Если вы хотите избавиться от «зеленых плюсов», вам просто нужно удалить РОЛЬ - «РОЛЬ _ .. ИМЯ _CREATE» для соответствующего административного объекта.

Пожалуйста, обратитесь к этой части документации , если вы застряли.

...