【问题标题】:Symfony2 populate choice list from api dataSymfony2 从 api 数据填充选择列表
【发布时间】:2012-11-09 17:56:42
【问题描述】:

我必须从 Api 调用中填充选择列表。我尝试了几种方法都没有成功。

我认为最好的方法是实现 ChoiceListInterface。

有人已经做过了吗?

谢谢

【问题讨论】:

标签: php forms symfony


【解决方案1】:

扩展LazyChoiceList并实现loadChoiceList方法,例如

//ApiChoiceList.php
namespace Your\Namespace;
use Symfony\Component\Form\Extension\Core\ChoiceList\LazyChoiceList;
use Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceList;

class ApiChoiceList extends LazyChoiceList 
{
    protected function loadChoiceList()
    {
        //fetch and process api data

        return new ChoiceList($choices, $labels);

    }
}

然后在表单的buildForm 方法中,

$builder->add('fieldname', 'choice', array(
    'choice_list' => new Your\Namespace\ApiChoiceList(),
    //....
));

【讨论】:

  • +1 @m2mdas,这很棒。只是一个快速的问题。 ApiChoiceList 将包含将在表单中使用的所有选项。实体中是否需要做任何事情来确保数据适合 ApiChoiceList?
  • 可能希望将额外的很棒的选择列表作为服务添加到您的答案中。 :)
  • 如何在twig视图中使用这个选择列表来显示showAction中的值?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多