Я пытаюсь добавить несколько переключателей в раздел слияния в веб-приложении.Если пользователь импортирует csv электронных писем, и электронные письма уже сопоставлены существующему пользователю, ему предоставляется возможность создания новой учетной записи пользователя или использования одного из электронных писем, уже связанных с пользователем.Если они выбирают «Нет» в раскрывающемся списке, чтобы не добавлять нового пользователя, я хочу, чтобы рядом с доступными учетными записями пользователей отображался переключатель.Проблема в том, что я не могу получить выпадающий / радио для каждого пользователя.
Я пробовал родительскую форму с collectionType, содержащую дочерний тип формы с выпадающим меню и переключателями в качестве вариантов выбора в дочерней форме.Родительская форма:
class EmailCampaignExistingUsersForm extends AbstractForm{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$this->existingUsers = [''];
if(isset($options['data'])) {
$this->existingUsers = $options['data'];
}
$builder
->add(
'newOrExistingUser',
CollectionType::class,
[
'entry_type' => EmailCampaignExistingUsersType::class,
'entry_options' => array(
'label' => false,
),
'data' => [$this->existingUsers],
'by_reference' => false,
'allow_add' => false,
'allow_delete' => false
]
);
}
И дочерний тип:
class EmailCampaignExistingUsersType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('newUser',
ChoiceType::class,
[
'label' => 'Create new user?',
'expanded' => true,
'multiple' => false,
'choices' => [
'yes' => 1,
'no' => 0
],
]
)
->add('existing_user',
CollectionType::class,
[
'entry_type' => ChoiceType::class,
'entry_options' => array(
'label' => false
),
'by_reference' => false,
'allow_add' => false,
'allow_delete' => false
]);
}
Вот веточка:
<tbody>
{% for email, userArray in existingUsers %}
<tr>
<td colspan="3"><strong>{{ email }}</strong></td>
<td>{% for newUser in emailCampaignExistingUsersForm.newOrExistingUser %}
{{form_end(emailCampaignExistingUsersForm)}} {% endfor %}
</td>
</tr>
{% for users in userArray %}
{% for user in users %}
<tr>
<td>{{ user.getId() }}</td>
<td>{{ user.getName() }}</td>
<td>{{ user.getUserName() }}</td>
<td>Add this one to the list
{{form_end(emailCampaignExistingUsersForm)}}</td>
</tr>
{% endfor %}
{% endfor %}
{% endfor %}
![enter image description here](https://i.stack.imgur.com/7TVzR.png)
Это то, как он рендерится до сих пор: ему нужно иметь опции Да / Нет для каждого примера, выделенного жирным шрифтом, и переключатель для каждого пользователя, чтобы люди могли выбирать, какая учетная запись пользователявключить на почту слияние.