8. Form Types (フォームタイプ)

8.2. Other form types

The bundle comes with some handy form types which are available from outside the scope of the SonataAdminBundle:

バンドルは SonataAdminBundle のスコープの外から利用できるいくつかの便利なフォームタイプを備えています。

8.2.1. sonata_type_immutable_array

The Immutable Array allows you to edit an array property by defining a type per key.

Immutable Array はキーごとにタイプを定義することにより配列プロパティを編集することができます。

The type has a keys parameter which contains the definition for each key. A definition is an array with 3 options :

このタイプ(sonata_type_immutable_array)はそれぞれのキーごとに定義を含んだキーパラメーターを持っています。(訳が意味不明ですね。。)

定義は3つのオプションを持った配列です

  • key name
  • type : a type name or a FormType instance (タイプ名 もしくは FormType のインスタンス)
  • related type parameters : please refer to the related form documentation.

(関係したform documentationを参照して下さい)

Let’s say a Page have options property with some fixed key-pair values, each value has a different type : integer, url, or string for instance.

例えば、固定化されたいくつかのkey-pair 値のオプションプロパティを持った Page があるとして、 それぞれの値は異なるタイプを持っています。具体的には、数字やurlもしくは文字列といったものがあるでしょう。 (翻訳がちょっと怪しいです)

<?php
class Page
{
    protected $options = array(
        'ttl'       => 1,
        'redirect'  => ''
    );

    public function setOptions(array $options)
    {
        $this->options = $options;
    }

    public function getOptions()
    {
        return $this->options;
    }
}

Now, the property can be edited by setting a type for each type

これから、そのプロパティはそれぞれのタイプに応じてタイプが設定され編集されます。

<?php
$form->add('options', 'sonata_type_immutable_array', array(
    'keys' => array(
        array('ttl',        'text', array('required' => false)),
        array('redirect',   'url',  array('required' => true)),
    )
));

8.2.2. sonata_type_boolean

The boolean type is a specialized ChoiceType where the choices list is locked to ‘yes’ and ‘no’.

boolean タイプは選択リストがyesかnoに固定された ChoiceType に特化しています。

8.2.3. sonata_type_translatable_choice

The translatable type is a specialized ChoiceType where the choices values are translated with the Symfony Translator component.

translatable type は選択肢の値がSymfony Translator component で翻訳することに 特化した ChoiceType です。

The type has one extra parameter (このタイプは1つの追加パラメーターを持っています):

  • catalogue : the catalogue name to translate the value (値を翻訳するためのカタログの名前)
<?php

// The delivery list
class Delivery
{
    public static function getStatusList()
    {
        return array(
            self::STATUS_OPEN      => 'status_open',
            self::STATUS_PENDING   => 'status_pending',
            self::STATUS_VALIDATED => 'status_validated',
            self::STATUS_CANCELLED => 'status_cancelled',
            self::STATUS_ERROR     => 'status_error',
            self::STATUS_STOPPED   => 'status_stopped',
        );
    }
}

// form usage
$form->add('deliveryStatus', 'sonata_type_translatable_choice', array(
    'choices' => Delivery::getStatusList(),
    'catalogue' => 'SonataOrderBundle'
))