Вам необходимо указать варианты, используя параметр choices
в типе формы:
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('productKey', 'choice', array(
'choices' => array('1' => 'one', '2' => 'two', '3' => 'three'),
))
;
}
Если ваш выбор исходит от службы, вы можете создать собственный тип формы product_key
и настроить его.в контейнере службы.
services:
product_key_form_type:
class: ProductKeyFormType
arguments:
- @product_key_choices_provider
tags:
- { name: form.type, alias: product_key }
Этот тип формы будет выглядеть примерно так:
class ProductKeyFormType extends AbstractType
{
private $provider;
public function __construct($provider)
{
$this->provider = $provider;
}
public function getDefaultOptions(array $options)
{
return array(
'choices' => $this->provider->getProductKeyChoices(),
);
}
public function getParent(array $options)
{
return 'choice';
}
public function getName()
{
return 'product_key';
}
}
И будет использоваться в вашем текущем типе формы примерно так:
public function buildForm(FormBuilder $builder, array $options)
{
$builder
->add('productKey', 'product_key')
;
}
Если всего этого слишком много, вы также можете добавить опцию product_key_choices
к вашей форме (добавив 'product_key_choices' => array()
к getDefaultOptions
) и просто передать выбор из вашего контроллера.Это легче запустить и запустить, но менее переносимо, так как вам нужно будет передавать эту опцию каждый раз, когда вы используете форму.