【发布时间】:2016-05-24 12:19:35
【问题描述】:
我想将一个表单类更新为 Symfony2.8(以及后来的 Symfony3)。现在,除了一个不再支持的属性 choice_list 之外,表单已被转换。而且我不知道该怎么做。
我有以下也被定义为服务的表单类型:
class ExampleType extends AbstractType
{
/** @var Delegate */
private $delegate;
public function __construct(Delegate $delegate)
{
$this->delegate = $delegate;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('list', ChoiceType::class, array(
'choice_list' => new ExampleChoiceList($this->delegate),
'required'=>false)
);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'ExampleClass',
));
}
}
我有以下选择列表的类:
class ExampleChoiceList extends LazyChoiceList
{
/** @var Delegate */
private $delegate;
public function __construct(Delegate $delegate)
{
$this->delegate = $delegate;
}
/**
* Loads the choice list
* Should be implemented by child classes.
*
* @return ChoiceListInterface The loaded choice list
*/
protected function loadChoiceList()
{
$persons = $this->delegate->getAllPersonsFromDatabase();
$personsList = array();
foreach ($persons as $person) {
$id = $person->getId();
$personsList[$id] = (string) $person->getLastname().', '.$person->getFirstname();
}
return new ArrayChoiceList($personsList);
}
}
ExampleChoiceList 类生成我想要的选择列表,直到现在它仍然有效。但是属性choice_list 不再受支持,我的问题是“如何在不做太多工作的情况下进行转换?”。我读到我应该使用简单的choice,但是我如何在 Symfony 2.8 中得到我想要的(来自数据库的特定标签)。我希望有人可以帮助我。
【问题讨论】:
标签: php symfony symfony-forms