Symfony 3.4 - есть ли способ создать автоматически увеличивающийся идентификатор для ChoiceType? - PullRequest
1 голос
/ 22 марта 2019

У меня есть ChoiceType, который отображается как серия переключателей:

foreach ($cards as $card) {
    $choices["{$card->brand} **** **** **** {$card->last4}"] = $card->id;
}

$form = $this->createFormBuilder()
    ->add('card', ChoiceType::class, ['choices' => $choices,'expanded' => true, 'multiple' => false])
    ->add('Submit', SubmitType::class)
    ->getForm()

Я хотел бы иметь инкрементный идентификатор для каждого выбора, например, «card1», «card2» и т. Д., Но не уверен, как на самом деле это сделать. Сами варианты выбора создаются динамически - я не знаю заранее, сколько вариантов (если таковые имеются) будет присутствовать.

В идеале, должен быть какой-то внутренний счетчик, к которому я мог бы получить доступ в 'choice_attr' и / или 'choice_label', но я не вижу ничего подобного в документах. Есть идеи?

1 Ответ

3 голосов
/ 22 марта 2019

Создайте переменную счетчика снаружи и посчитайте ее для каждого вашего выбора. Для добавления идентификатора используйте параметр choice_attr :

$i = 0;

$form = $this->createFormBuilder()
    ->add('card', ChoiceType::class, [
        'choices' => $choices,
        'choice_attr' => function() use ($i) {
            $i++;
            return ['id' => 'choice-'.$i];
        },
    ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...