Я хочу создать форму, в которой есть массив с флажком для каждой строки.Таким образом, пользователь может выбрать, какие строки будут обрабатываться в контроллере.
Итак, я создал форму и массив.Каждая строка массива имеет имя Task Element
и флажок для его выбора:
![enter image description here](https://i.stack.imgur.com/ewH2z.png)
<h3><?= __('Task Elements') ?></h3>
<?php echo $this->Form->create('AddElement', ['url'=>['action' => 'add',$tasktypeid]]); ?>
<table cellpadding="0" cellspacing="0">
<thead>
<tr>
<th scope="col"><?= $this->Paginator->sort('id') ?></th>
<th scope="col"><?= $this->Paginator->sort('name') ?></th>
<th scope="col"><?= $this->Paginator->sort('element_category_id') ?></th>
</tr>
</thead>
<tbody>
<?php foreach ($taskElements as $taskElement): ?>
<tr>
<td><?= $this->Number->format($taskElement->id) ?></td>
<?= $this->Form->hidden('id',['value' => $taskElement->id]); ?>
<td><?= $this->Form->control(h($taskElement->name), ['type' => 'checkbox']);?></td>
<td><?= $taskElement->element_category_id != 0 ? $this->Html->link($taskElement->element_category->name, ['controller' => 'ElementCategories', 'action' => 'view', $taskElement->element_category->id]) : '' ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table><?php
echo $this->Form->submit('Add');
echo $this->Form->end();?>
Но в контроллере debug($this->request->getData());
возвращает это:
[
'id' => '32',
'Library_Element' => '0',
'Library_Element_2' => '0'
]
Что не правильно, потому что id 'Library_Element' равен 27, а не 32. Поэтому он должен возвращать массив с 2 строками, а не массив с 1 строкой и 3 столбцами.
Это правильный массив, который я ожидаю получить:
Array
(
[0] => Array
(
[id] => 27
[Library_Element] => '0'
)
[1] => Array
(
[id] => 32
[Library_Element_2] => '0'
)
)
Или в идеале я хотел бы получить массив, подобный этому:
Array
(
[0] => Array
(
[id] => 27
[name] => 'Library Element'
[checked] => '0'
)
[1] => Array
(
[id] => 32
[name] => 'Library Element 2'
[checked] => '0'
)
)
Как я могу это исправить?И затем в контроллере я хочу перебрать данные POST и проверить для каждой строки, проверено это или нет.Как правильно перебрать данные?