Использование функции, возвращающей значения для опции option в форме Symfony2

0

У меня есть эта форма Symfony2:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add(
            'nombre',
            'text',
            array(
                'required' => true,
                'mapped'   => false,
                'label'    => 'Nombre'
            )
        )
        ->add(
            'anno_modelo',
            'choice',
            array(
                'placeholder'   => 'Escoja una opción',
                'choices'       => array(),
                'required'      => true
            )
        )
        ->add(
            'anno_fabricacion',
            'choice',
            array(
                'placeholder'   => 'Escoja una opción',
                'choices'       => array(),
                'required'      => true
            )
        );
}

и у меня есть этот код:

function getChoices() {
    $choices = [];
    for($i = date("Y"); $ >= 1900; $i--) {
        $choices[$i - 1] = $i - 1;
    }

    return $choices;
}

Мне нужно использовать эти $choices в качестве значения choices, как я могу это достичь?

  • 1
    Дополнительное примечание, но более простой способ создать это - использовать функцию диапазона, такую как $range = range(date('Y'), 1900); получить диапазон лет, а затем вернуть его с теми же ключами, что и значения, используя array_combine, например return array_combine($range, $range); ,
  • 0
    @Qoop правильный пример, спасибо, это всего лишь примерная функция, так как тот, над которым я работаю, немного сложен, и я еще не закончил
Теги:
symfony-forms

1 ответ

1
Лучший ответ

Попробуйте этот код:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $choices = $this->getChoices();
    $builder
        ->add(
            'nombre',
            'text',
            array(
                'required' => true,
                'mapped'   => false,
                'label'    => 'Nombre'
            )
        )
        ->add(
            'anno_modelo',
            'choice',
            array(
                'placeholder'   => 'Escoja una opción',
                'choices'       => $choices,
                'required'      => true
            )
        )
        ->add(
            'anno_fabricacion',
            'choice',
            array(
                'placeholder'   => 'Escoja una opción',
                'choices'       => $choices,
                'required'      => true
            )
        );
}

private function getChoices() 
{
    $choices = [];
    for($i = date('Y'); $i >= 1900; $i--) {
        $choices[$i - 1] = $i - 1;
    }

    return $choices;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню