2012-11-09 83 views
2

我必須從Api調用填充選項列表。我嘗試了幾種方法,但沒有成功。Symfony2從API數據填充選項列表

我認爲最好的方法是通過實現ChoiceListInterface。

有人已經做到了嗎?

感謝

+1

你能告訴你真正試過嗎? –

+0

我剛剛在這裏回答了類似的問題:http://stackoverflow.com/questions/13285281/from-doctrine-query-to-querybuilder-in-a-simfony2-entity-field-type/13285719#13285719 請參閱「UPDATE」部分的答案... –

回答

13

擴展LazyChoiceList和實施loadChoiceList方法,e.g

//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(), 
    //.... 
)); 
+0

+1 @ m2mdas,這太好了。只是一個簡單的問題。 ApiChoiceList將包含將在表單中使用的所有選項。在實體中是否有任何事情要確保數據適合ApiChoiceList? – Mick

+1

可能希望將額外的精彩選擇列表作爲服務添加到您的答案中。 :) – Tek

+0

@ m2mdas謝謝你的回答,它真的非常有幫助! =) – grogers