Я хочу получить флажки из таблицы в модуле просмотра, но я не могу заставить его работать. Это таблица:
<form action="" method="post"> <TABLE id="dt_basic" class="table table-striped table-bordered table-hover dataTable"> <THEAD> <TR> <TH></TH> <TH>ID</TH> <TH>Client</TH> <TH>User</TH> <TH>Role</TH> <TH>Projects</TH> </TR> </THEAD> <TBODY> <?php /* @var $item Admin\Model\User */ foreach ($this->users as $item) { ?> <TR> <TD class='admin'><input type="checkbox" name="users[<?php echo $item->id; ?>]" value=<?php echo $item->id; ?> checked/></TD> <TD class='admin c'><?= $item->id ?></TD> <TD class='admin'><?= $item->getClientObject() ?></TD> <TD class='admin'> <img src="<?= $item->getAvatarPath() ?>" alt="me" class="online avatar"/> <a title='details' href='/admin/user/detail/id/<?= $item->id ?>'><?= $item->name . " " . $item->surname ?> </a> </TD> <TD class='admin'><?= $item->getRoleObject() ?></TD> <TD class='admin'> <a title='projects' class='btn btn-default btn-sm' href='/admin/user/project/id/<?= $item->id ?>'><i class='fa fa-icon-fix fa-briefcase'></i></a> <? foreach ($this->projects[$item->id] as $i => $project) { echo $project->getName(); if ($i != sizeof($this->projects[$item->id]) - 1) echo " • "; } ?> </TD> </TR> <?php } ?> </TBODY> </TABLE> </form>
Весь .phtml
: http://pastebin.com/8paJZgjb
Я хочу получить массив users[]
и использовать его элементы внутри контроллера, но я не могу найти способ его получить. Вот что я пробовал до сих пор:
if (!empty($_POST["users"])) { foreach (($_POST["users"]) as $selectedUsers) { $users = $this->getUserTable()->fetchAll(false, "id=" . $selectedUsers); } } else { $this->cache->error = "Please choose at least one user."; return $this->view; }
Вся функция: http://pastebin.com/pE4afemx
… но, по-видимому, он пуст. var_dump
показывает элементы из формы рассылки, но никаких признаков пользователей:
array (size=2) 'subject' => string 'hello' (length=5) 'message' => string 'message' (length=7)
Какие-либо предложения ?
Из кода в вашей ссылке pastebin у вас на странице две формы. Один из них начинается в строке 16, содержит ваши пользовательские флажки, а затем заканчивается в строке 61. Затем второй начинается в строке 77 и заканчивается в строке 79. Я предполагаю, что это тот, который отправляется кнопкой отправки javascript, которую вы используете в строке 86 ,
Поскольку вы отправляете вторую форму, публикуются только ее данные. Если вы хотите, чтобы все было представлено, все должно быть в одной форме. В идеале вы перемещаете флажки пользователя из этого шаблона, они выводятся как часть $form
, но было бы сложно держать их в макете таблицы таким образом, поэтому проще было бы переместить таблицу, содержащую пользовательский флажок, чтобы он выводился после echo $this->formCollection($form);
, но до этой формы заканчивается echo $this->form()->closeTag();
, Избавьтесь от тегов формы, которые у вас есть в строках 16 и 61, так как вам нужна только одна форма.
Изменить : Чтобы исправить другую проблему, попробуйте изменить код контроллера на это:
if (!empty($_POST["users"])) { $userIDs = array(); foreach ($_POST["users"] as $selectedUser) { if (is_numeric($selectedUser) && $selectedUser > 0) { $userIDs[] = $selectedUser; } } if (count($userIDs) > 0) { $users = $this->getUserTable()->fetchAll(false, "id IN (".implode(', ', $userIDs).")"); }