2

Symfony2 を 2.1 に更新しましたが、フォームを送信しようとするとエラーが発生します:

選択制約は有効なコールバックを期待しています

フォーム タイプ クラスのソース コード:

$builder->add('type', 'choice', 
                    array(
                        'expanded' => true, 
                        'multiple' => false,
                        'choice_list' => new TypeChoices(),
                        'required' => true,
                    )
                  )

TypeChoices クラス:

class TypeChoices implements ChoiceListInterface {

    public static $choices = array(
        'full-time' => 'Full time', 
        'part-time' => 'Part time', 
        'freelance'  => 'Freelance',
    );

    public static function getChoiceNameByValue($value)
    {
        return self::$choices[$value];
    }

    public function getChoices() 
    {   
        return self::$choices;  
    }

    public static function getTypeChoicesKeys() 
    {
        return array_keys(self::$choices);
    }

    public static function getPreferredChoiceKey()
    {
        return 'full-time';
    }
}

誰かアドバイスをくれませんか?

4

1 に答える 1

0

次のように、 SimpleChoiceListクラスを拡張してみてください。

ChoiceList コード:

class TypeChoices extends SimpleChoiceList
{
    public static $choices = array(
        'full-time' => 'Full time', 
        'part-time' => 'Part time', 
        'freelance'  => 'Freelance',
    );

    /**
     * Constructor.
     *
     * @param array $preferredChoices Preffered choices in the list.
     */
    public function __construct(array $preferredChoices = array()) // PASS MORE ARGUMENT IF NEEDED
    {
        parent::__construct(
            static::$choices,
            $preferredChoices
        );
    }
}

フォーム タイプ コード:

->add('type', 'choice', array(
    'choice_list' => new TypeChoices(),
    ...
))
于 2012-07-24T14:11:30.857 に答える