The bundle comes with some handy form types which are available from outside the scope of the SonataAdminBundle:
バンドルは SonataAdminBundle のスコープの外から利用できるいくつかの便利なフォームタイプを備えています。
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つのオプションを持った配列です
(関係した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)),
)
));
The boolean type is a specialized ChoiceType where the choices list is locked to ‘yes’ and ‘no’.
boolean タイプは選択リストがyesかnoに固定された ChoiceType に特化しています。
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'
))