2012-03-13 14 views
3

ソナタ管理フォームの新しいアイテムを追加するための緑色のプラスを取り除く方法はありますか?ネイティブのコレクションタイプはallow_add & allow_deleteですが、sonata_type_collectionはこれらのオプションに気付いていないようです。SonataAdminBundleフォームの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 
    )) 

を持たない

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

た 'オプションは存在しません "allow_add"' 'オプション' allow_addは存在しません 'というエラーも表示されます

また、コレクションの各アイテムの横にある削除チェックボックスを削除したいと思います。私はそれに似たエリアにその答えがあると推測します。

ご協力いただければ幸いです。

答えて

1

私はSonataAdminBundleにはあまり手がかりがありませんが、2つのオプションが頭に浮かびます。

最初に、sonata_type_collectionではなくtypeコレクションを使用します。 この変更でどのような結果が得られるのかよく分かりませんが、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のnoobです、これが私が考えることができる唯一の方法です。

+0

ええ、私はこれらのことを無効にするオプションがないとはかなり信じられません。私は彼らのグーグルグループで同じ質問をしてきましたが、答えられていない質問の数が多いことをあまりにも敏感ではありません。そんなに恥ずかしいですが、それはあまりにも一般的で強力なようです。 – user1207727

+0

申し訳ありませんが、私はおそらく他のモジュールに追加機能が必要になるので、私はテンプレートを上書きすることに熱心ではないということを付け加えました。今のところ私はちょっと待ってください。 – user1207727

0

編集: だけ

->add('store_orders', null) 

代わりの

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

ソナタしようとは、オブジェクトに次のROLE based accessを与える: -

ROLE_SONATA _..._ GUESTを:ゲストに許可されているオブジェクトを表示し、 オブジェクトのリストを表示する。 ROLE_SONATA _..._STAFF:おそらく の最大の部分で、スタッフのユーザーはゲストと同じアクセス権を持ち、さらに は新しいオブジェクトの編集と作成を許可されています。 ROLE_SONATA _..._ EDITOR:エディタはスタッフのユーザーに 比べて、すべてのアクセスを許可され、DELETEおよびエクスポートするために許可されている

ROLE_SONATA _..._ ADMIN:管理ユーザーは、との上にすべてのアクセス を付与されていますユーザーは他のユーザーにアクセスを許可することができます。

ほとんどの場合、次のアクセス制御は(ソナタ管理にログインしている)STAFFとしての役割を持つユーザー

'ROLE_.._NAME__EDIT', 
    'ROLE_.._NAME__LIST', 
    'ROLE_.._NAME__CREATE', 
    'ROLE_.._NAME__VIEW', 
    'ROLE_.._NAME__DELETE', 
    'ROLE_.._NAME__OPERATOR', 
    'ROLE_.._NAME__MASTER', 

これらの役割は、クラス一人ひとりのために割り当てられますに割り当てられます。

"Green pluses"を取り除きたい場合は、対応するAdmin EntityのROLE - 'ROLE_ .. NAME _CREATE'を削除するだけです。

つまってしまった場合は、documentationのこの部分を参照してください。

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'); 
} 
+0

が正しいです! $ collection-> remove( 'create')してボタンを消すことができます。 – webDEVILopers

10

あなたから「新規追加」ボタンまたは「+」を防ぐために、「新規追加」ボタンが表示され、デフォルトでは、ソナタのadminフォームにコレクションを追加すると、この

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

をお試しください表示するには、配列のadd_btnキーをFALSEに設定します。これはadd関数の3番目のパラメータです。

+1

あなたの提案が何をしているのかの説明を追加して、あなたの答えを見つけた人々がその仕組みを理解できるようにしてください。 – Bobulous

+0

ありがとう@Arkanon –

関連する問題