4

米国の州のリストを含むファイルがあります。
アラバマ
アラスカ
など..

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;

    }
}

しかし、ChoiceListInterfaceに実装する他の7つの関数があります。

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を読みましたが、私の場合は不明確で、実装方法がよくわかりません。彼ら。

誰かが助けることができますか?どうもありがとう

4

1 に答える 1

5

LazyChoiceListを拡張してloadChoiceList()メソッドを実装すると、ファイルから読み取った値で満たされた新しいChoiceListオブジェクトを返すことができます。

于 2012-11-06T20:29:36.167 に答える