我希望在一个带有cakephp的页面上,每个表行下都有多个表单。我不知道如何更改输入名称以允许这样做。
<table cellpadding="0" cellspacing="0">
<tr>
<th><?php echo $this->Paginator->sort('id'); ?></th>
<th><?php echo $this->Paginator->sort('member_no'); ?></th>
<th><?php echo $this->Paginator->sort('first_name'); ?></th>
<th><?php echo $this->Paginator->sort('last_name'); ?></th>
<th><?php echo $this->Paginator->sort('total_points'); ?></th>
<th><?php echo $this->Paginator->sort('date_joined'); ?></th>
<th class="actions"><?php echo __('Actions'); ?></th>
</tr>
<?php foreach ($members as $member): ?>
<tr>
<td><?php echo h($member['Member']['id']); ?> </td>
<td><?php echo h($member['Member']['member_no']); ?> </td>
<td><?php echo h($member['Member']['first_name']); ?> </td>
<td><?php echo h($member['Member']['last_name']); ?> </td>
<td><?php echo h($member['Member']['total_points']); ?> </td>
<td><?php echo h($member['Member']['date_joined']); ?> </td>
<td class="actions">
<?php echo $this->Html->link(__('View'), array('action' => 'view', $member['Member']['id'])); ?>
<?php echo $this->Html->link(__('Edit'), array('action' => 'edit', $member['Member']['id'])); ?>
<?php echo $this->Form->postLink(__('Delete'), array('action' => 'delete', $member['Member']['id']), null, __('Are you sure you want to delete # %s?', $member['Member']['id'])); ?>
</td>
</tr>
<tr>
/// This is the form for each record
<td>
<?php echo $this->Form->create('Point', array('action' => 'add')); ?>
<fieldset>
<legend><?php echo __('Add Point'); ?></legend>
<?php
echo $this->Form->input('member_id',array('type'=>'hidden', 'value'=>$member['Member']['id']));
echo $this->Form->input('points');
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</td>
</tr>
<?php endforeach; ?>
</table>
CakePHP将正常生成表单,只要它们是唯一命名的。您可以考虑将成员id附加到表单的名称上:
<?php echo $this->Form->create('Point'.$member['Member']['id'], array('action' => 'add')); ?>
您可以使用此方法(或您想要的任何其他方法(使表单独一无二。您还可能遇到非唯一字段名的问题。在这种情况下,如果表单和字段来自同一个控制器,则使用类似的技巧使它们都具有唯一的字段名。