如何在Symfony 2.1中使用ChoiceList?

时间:2012-11-06 19:14:46

标签: symfony symfony-2.1

我有一个包含美国州名单的文件 阿拉巴马
阿拉斯加
等等。

在symfony 2.0中,我使用ChoiceListInterface.php在我的表单中使用它。我只是写了这个:

<?php

namespace MyBundle\Form;

use Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceListInterface;

class StateChoiceList implements ChoiceListInterface
{
    public function getChoices()
    {
        $lines = file('listes/us_states.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
        // fill the array
        $arr = array();
        foreach ($lines as $line) {
            $arr[$line] = $line;
        }
        return $arr;

    }
}

但是现在还有其他7个函数要在ChoiceListInterface中实现:

public function getValues();
public function getPreferredViews();
public function getRemainingViews();
public function getValuesForChoices(array $choices);
public function getIndicesForChoices(array $choices);
public function getIndicesForValues(array $values);

我已阅读文档http://api.symfony.com/2.1/Symfony/Component/Form/Extension/Core/ChoiceList/ChoiceList.html但在我的情况下,我发现它不清楚,我真的不明白如何实现它们。

有人可以帮忙吗?非常感谢

1 个答案:

答案 0 :(得分:5)

您可以扩展LazyChoiceList并实现loadChoiceList()方法,您可以返回一个新的ChoiceList对象,其中包含从文件中读取的值。