Во-первых, вам не хватает закрывающих тегов в ветке для ваших if
и for
, но я предполагаю, что они просто потерялись во время копирования.
Во-вторых, вы присваиваете всем элементам ввода одинаковый идентификатор "userchecked". Каждый элемент HTML должен иметь уникальный идентификатор, например, добавив свой идентификатор пользователя.
Нечто подобное происходит с атрибутом имени. Если вы присваиваете нескольким элементам формы одно и то же имя, будет отправлен только последний.
Итак, ваша форма должна выглядеть примерно так:
<form
method="GET"
action="{{path('ce_utilisateur_send_sms') }}"
id="lbad_form_sms"
name="users"
>
{% if listUsers is not empty %}
{% for usr in listUsers %}
<input
id="{{"userchecked_" ~ usr.id}}"
name="{{"checked_" ~ usr.id}}"
type="checkbox"
value="{{ usr.telephone }}"
/>
<span>{{ usr.username }}</span>
{% endfor %}
{% endif %}
<input type="submit" value="Envoyer un sms!"/>
</form>
Чтобы исправить ваш контроллер, вы должны получить ввод по имени поля. Поскольку он создается динамически, проще всего получить все параметры и выполнить цикл по ним.
public function sendSmsAction(Request $request) {
if ($request->isMethod('get')) {
$parameters = $request->query->all();
foreach ($parameters as $name => $value) {
var_dump("$name: $value");
}
die();
}
return $this->render('CeUtilisateurBundle:Utilisateur:sms.html.twig')
}
Обратите внимание, что для пустого флажка не будет передан параметр.