4

ソナタ管理フォームのコレクションに新しいアイテムを追加できる緑色のプラスを取り除く方法を知っている人はいますか? ネイティブ コレクション タイプには 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

4 に答える 4

1

SonataAdminBundle についてはよくわかりませんが、2 つのオプションが思い浮かびます。

1 つ目は、sonata_type_collection の代わりに型コレクションを使用することです。この変更によってどのような結果が得られるかはわかりませんが、bash を実行して何が起こるかを確認してください。

もう 1 つのオプションは、テンプレートを独自のものでオーバーライドすることです。

コピー

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 初心者であり、これが私が考えることができる唯一の方法です。

于 2012-03-13T19:21:22.967 に答える
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');
} 
于 2012-05-01T18:07:17.877 に答える
0

編集:試してみてください

->add('store_orders', null)

それ以外の

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

Sonata は、以下のROLE ベースのオブジェクトへのアクセスを提供します:-

ROLE_SONATA_..._GUEST: オブジェクトおよびオブジェクトのリストを表示できるゲスト。ROLE_SONATA_..._STAFF: おそらくユーザーの最大の部分です。スタッフ ユーザーはゲストと同じ権限を持ち、さらに新しいオブジェクトの編集と作成が許可されます。ROLE_SONATA_..._EDITOR: 編集者にはすべてのアクセス権が付与され、スタッフ ユーザーと比較して、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 - 'ROLE_.. NAME _CREATE' を削除するだけです。

行き詰まった場合は、ドキュメントのこの部分を参照してください。

于 2012-04-04T19:21:57.813 に答える