2017-02-11 1 views
1

私はsymfony/sonataのテンプレートエンジンに苦労しています...通常は継承とオブジェクト指向設計に精通していますが、これはわかりません。sonata/twigのテンプレート機構を理解する

私の目標は、DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twigをオーバーライドするためです。私の考えでは、私の管理クラスのshow関数のリストがレンダリングされています。ソナタのような単純なリストだけでなく、私のデータを表示したいからです。私はバンドルの明示的な管理者のショー機能のためにこれを上書きしたいだけです。一般的にはではありません!私のサービス

- [ setTemplate, [show, AcmeBundle:TestAdmin:show.html.twig]] 

問題への独自の継承されたバージョンを注入することによって、

はソナタのドキュメントによると、私は一般的なテンプレート「base_show.html.twig:CRUD SonataAdminBundle」を上書きすることができるだけです基本テンプレートには他の多くのテンプレートが含まれています。時にはphpによってテンプレートに注入されたオブジェクト関数によってアクセスされることもあります。

どのように私は/にアクセスすることができます鉱山バージョンではなく、ベンダー一つで使用されるように?

DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig 

を上書きすべての連鎖テンプレートをオーバーライドしますか?

DoctrineORMAdminBundle:CRUD:CRUD:show_orm_one_to_many.html.twigはSonataAdminBundle拡張base_show_field.html.twig

をしかし、私は知らない、どのようにSonataAdminBundle:CRUD:CRUD:base_show_field.html.twigはSonataAdminBundleに来るbase_show .html.twig。私は妥当なコードを見つけることができません。あなたが代わりに全体のショーのテンプレートをオーバーライドするフィールド毎のテンプレートを上書きすることができ

おかげ

答えて

0

$showMapper->add(
    'my_field', 
    null, // let the type guesser do its thing 
    ['template' => 'whatever_you_need.html.twig'] 
); 

これは機能しており、ドキュメント内で見つからない場合は、それについての段落の寄付を検討してください。

+0

私はこの方法を試した回数は分かりません。それは決してうまくいきません...今私はもう一度試してみると、魔法のように働きました!ありがとう、あなたは私の日を救った:)(結論:決してあきらめないで、もう一度やり直してください... ^^) しかし、そういうことは、 –

+0

DoctrineORMAdminBundle:CRUD:show_orm_one_to_many.html.twig'をオーバーライドするという意味であれば、sf docsで説明されている標準のテンプレートオーバーライドで達成できると思います。 – greg0ire