结块多种形式


cakephp multiple forms

我希望在一个带有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']); ?>&nbsp;</td>
        <td><?php echo h($member['Member']['member_no']); ?>&nbsp;</td>
        <td><?php echo h($member['Member']['first_name']); ?>&nbsp;</td>
        <td><?php echo h($member['Member']['last_name']); ?>&nbsp;</td>
        <td><?php echo h($member['Member']['total_points']); ?>&nbsp;</td>
        <td><?php echo h($member['Member']['date_joined']); ?>&nbsp;</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')); ?>

您可以使用此方法(或您想要的任何其他方法(使表单独一无二。您还可能遇到非唯一字段名的问题。在这种情况下,如果表单和字段来自同一个控制器,则使用类似的技巧使它们都具有唯一的字段名。