Sonata で Symfony2 を使用すると、リスト内でフィールド テンプレートを上書きでき、変数をテンプレートに割り当てることができます。つまり、setTemplateVar() が役立つ場合があります。(「attr」がこの目的を果たすフォームについては話していませんが、リスト...)
メソッドconfigureListFieldsでリストマッパーの特定のフィールドに対して定義されたテンプレートに変数を渡すための最良の方法は何ですか?
<?php
namespace Acme\AcmeBundle\Admin;
use Sonata\AdminBundle\Admin\Admin;
use Sonata\AdminBundle\Datagrid\ListMapper;
use Sonata\AdminBundle\Datagrid\DatagridMapper;
use Sonata\AdminBundle\Validator\ErrorElement;
use Sonata\AdminBundle\Form\FormMapper;
class AcmeAdmin extends Admin
{
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('acme_field')
->add('date', 'date', array(
'template' => "AcmeBundle:CRUD:list_date.html.twig",
// 'dateFormat' => "Y-m-d",// ---> how to pass this var to twig ?
))
->add('_action', 'actions', array(
'actions' => array(
'edit' => array(),
'delete' => array(),
),
))
;
}
日付の変換と書式設定に関する特定の問題の解決策は、次のように twig テンプレートで既に実装されています。
{% block field%}
{% if value is empty %}
{% else %}
{# retrieving the dateFormat variable from the listmapper #}
{% if dateFormat is defined %}
{{ value|date(dateFormat)|title }}
{% else %}
{{ value|date('m / Y') }}
{% endif %}
{# passing the locale in some way here would be great, it is not available in twig.. #}
{# scratch that, it is not necessary with intl.extension... #}
{% if locale is defined %}
{% set dflt_locale = locale %}
{% else %}
{% set dflt_locale = 'fr_FR.UTF-8' %}
{% endif %}
{{ value|localizeddate('medium', 'none', dflt_locale)|title }}
{% endif %}
{% endblock %}
ただし、私の目標は、リストマッパーから変数を取得できるようにすることです。
提案された例では、dateFormat は渡すのに適したものです...
localizeddate に渡す必要がないことに気付いたので、ロケールに関する問題は実際には問題ありません... intl 拡張機能を介して既に利用可能です。
次の投稿の回答は、ロケールを定義できなかったため、その結論に至りましたが、パラメーターを追加しないことで解決されました! したがって、Symfony 2 を使用して小枝の日付をローカライズします。
{{ value|localizeddate('medium', 'none')|title }}
dateFormat パラメーターに関連するすべての応答を事前に乾杯!
ヴィンツ