6

Zend Framework 2 の新しくリリースされたバージョンでは、2 つの新しいフォーム要素が追加されましたDateSelectMonthSelect。3つの選択を追加する前者を使用したい。日、月、年。ただし、出力を希望どおりにフォーマットするのに問題があります。これに関するドキュメントはありません。

次のようにフォーム要素をフォームに追加しています (このページから取得):

$this->add(array(
    'type'    => 'Zend\Form\Element\DateSelect',
    'name'    => 'birthDate',
    'options' => array(
        'label'               => 'Date',
        'create_empty_option' => true,
        'day_attributes'      => array(
            'data-placeholder' => 'Day',
            'style'            => 'width: 20%',
        ),
        'month_attributes'    => array(
            'data-placeholder' => 'Month',
            'style'            => 'width: 20%',
        ),
        'year_attributes'     => array(
            'data-placeholder' => 'Year',
            'style'            => 'width: 20%',
        )
    )
));

出力については、次のようにしています。

echo $this->formDateSelect($form->get('birthDate'));

問題は、選択がフォーマットされる方法を制御する方法がわからないということです。たとえば、現在は次の形式で出力されています[month] [day], [year]。2 つのことを変更したいです。まず、日と月を入れ替えたい。次に、コンマを取り除きたい。

ヘルパーは、IntlDateFormatterクラスを使用して選択をフォーマットします。ソース コードでは、次のように [link to source code] を呼び出すときに、日付型に定義済みの定数を使用できることに気付きました。__invoke()

echo $this->formDateSelect($form->get('birthDate'), IntlDateFormatter::SHORT);

すべての定数を試してみましたが、まだ必要な形式を取得できません。

3 つの選択に getter があることに気付きましたが、formSelectそれぞれにビュー ヘルパーを使用すると、データの入力が新しいビュー ヘルパー内にあるため、空の選択がレンダリングされます。そのため、選択を個別に使用する目的さえほとんど無効になります。次に、通常の選択を使用することもできます。

私の選択がどのようにフォーマットされているかをより詳細に制御する方法を知っている人はいますか? あまり手間をかけずに可能ですか、それとも最大の柔軟性のために3つの通常の選択を使用する必要がありますか?

4

3 に答える 3

2

の形式はViewHelperです$this->formDateSelect($element, $intlFormat, $locale)

そうは言っても、現在のロケール設定にアクセスして、ViewHelpersにintを挿入することで、必要な出力を作成できるはずです__invoke()getLocale()ViewHelperのを見ると、デフォルトのtranslatorfrom構成が使用されていないことを意味するlocaleため、このViewHelperを明示的に設定する必要がありますが、正常に機能するはずです;)

それが期待どおりに機能しない場合は、Bakuraのブログで新しいフォーム機能に関するメッセージを押すことをお勧めします。

于 2013-02-03T12:09:15.467 に答える
2

日付を出力するときに Select DOM 要素の間にランダムなコンマを入れたいと思う理由がまったくわかりません...それで正確に何ができますか?

オプションで渡すことができるコンマとその他の区切り文字を削除するには、次のようにします。

"render_delimiters": false

デフォルトでは false であるべきだと思います

于 2013-05-29T08:32:31.927 に答える
0

サムが言及しているように、php.ini のロケール設定を更新するだけです。

たとえば、php.iniにこれがあります

intl.default_locale = en_Gb

これにより、英国のプロジェクトに必要な日/月/年の形式で DateSelect 要素が書式設定されます。

于 2014-12-16T16:46:58.480 に答える