2017-01-27 9 views
1

私はソナタ管理バンドルを持っていますが、フォームテンプレートのフィールド値に依存してスタイルを変更する方法を知ることはできません。ソナタ管理バンドルの行の色をフィールドの値に応じて変更します

例フィールドの難易度について

...難易度の値が高いほど、赤色のレコード行があるべき...

私はこれをどのように行うことができますか?私はソナタの小枝テンプレートを理解するのに何時間も費やしますが、このテンプレートを読むほど、混乱します。

テンプレートの間にブロック呼び出しがあり、この呼び出しがどこに来るのかどこから来るのかを把握することはできません。

symfony 2とSonata Admin Bundleを使用しています。

おかげ

答えて

1

独自のテンプレートウィッヒはSonataAdminBundleを拡張してください:CRUD:base_edit.html.twigとどちらかあなたの管理者クラスの$templatesプロパティをオーバーライドするか、そのようなあなたの管理サービスの宣言でそれを渡します

librinfo_crm.admin.organism: 
     class: Librinfo\CRMBundle\Admin\OrganismAdmin 
     arguments: [~, Librinfo\CRMBundle\Entity\Organism, LibrinfoCRMBundle:OrganismAdmin] 
     tags: 
      - name: sonata.admin 
       manager_type: orm 
       group: Customers Relationship Management 
       label: librinfo.crm.organism_admin.label 
       label_translator_strategy: blast_core.label.strategy.librinfo 
     calls: 
      - [ setTemplate, [edit, LibrinfoCRMBundle:OrganismAdmin:edit.html.twig]] #set a custom edit template 
      - [ setTemplate, [show, LibrinfoCRMBundle:OrganismAdmin:show.html.twig]] #sets a custom show template 

カスタムテンプレートは、例えば、デフォルトのソナタのテンプレートを上書きする必要があります。

{% extends 'SonataAdminBundle:CRUD:base_edit.html.twig' %} 

{% block form %} 
    {# your custom code #} 
{% endblock %} 

あなたはウィッヒBLOがわからない場合ckまたは拡張するテンプレートをカスタマイズする(リスト、編集、表示する)が、おそらくそれらのすべてを表示するように指示します。そして、あなたがしたいフィールドまたはあなたが特定の変数

をダンプするプロファイラや

{% dump(myVar) %}にテンプレートのすべての変数をダンプする

{% dump %}

を使用することができます何かを取得するための

編集

base_templateは、テンプレートの名前を含むコントローラから渡される変数です。

これらのテンプレートはすべて最終的にコントローラから渡された のbase_template変数を拡張しています。この 変数は、常に上記の グローバルテンプレートのいずれかの値をとります。これは、これらのファイルに対する変更が すべてのSonataAdminBundleインターフェイスにどのように影響するかです。

https://sonata-project.org/bundles/admin/master/doc/reference/templates.html#crudcontroller-actions-templates

あなたがbase_template変数をダンプする場合は、ウィッヒテンプレートが拡張されて知っていますよ。

parentFormブロックはちょうど上記の一見のために:CRUD:base_edit_form.html

{% use 'SonataAdminBundle:CRUD:base_edit_form.html.twig' with form as parentForm %}

この行はSonataAdminBundleをインポートします。ブロックformブロックには、別名parentFormがあります。

したがって{{ block('parentForm') }}は、SonataAdminBundleからformブロックをレンダリングするための呼び出しです。CRUD:base_edit_form.html.twig。

+0

私が理解していない完全な例... base_editはbase_templateを継承しています... base_templateテンプレートはどこですか? block_formでは、 'parent_form'だけが呼び出され、フルテキスト検索でもテンプレートを見つけることができません。 –

+0

私の編集した回答を参照してください – Mawcel

+0

ありがとうございました。 –