0

私がやろうとしているのは、在庫から複数の製品をチェックアウトする方法をユーザーに提供することです。

私の製品インデックス ページ (チェックアウト可能なすべての製品を一覧表示) は次のようになります。

<?php echo $this->Form->create('multi');?>
<?php foreach ($products as $product): ?>
<tr class="hovertable">
    //All the fields go here
    <td style="cursor: default">
        <?php echo $this->Html->link($this->Html->image('tr/Checkouts_Add.png') . " " . __('Checkout'), array('controller' => 'Checkouts','action' => 'add', $product['Product']['id']), array('escape' => false, 'class' => 'button')); ?>
        <?php echo $this->Html->link($this->Html->image('tr/Edit.png'), array('action' => 'edit', $product['Product']['id']), array('escape' => false)); ?>
        <?php echo $this->Form->postLink($this->Html->image('tr/Delete.png'), array('action' => 'delete', $product['Product']['id']), array('escape' => false), __('Are you sure you want to delete # %s?', $product['Product']['id'])); ?>
        <?php echo $this->Form->input('Product.id.'.$product['Product']['id'] ,
            array('label' => false,
                  'type' => 'checkbox',
                  'id'=>'listing_'.$product['Product']['id'])); ?>
    </td>
</tr>
<?php endforeach; ?>
<?php echo $this->Form->submit(__('Submit'));?>

次に、チェックアウトコントローラーで、複数のアイテムをチェックアウトするための新しい機能を追加しました。このフォームにチェック済みの製品が入力されるようにしたいと思います

    public function multi($count = 1) {
    if($this->request->is('post')) {            
        foreach($this->request->data['Checkout'] as $data) {
            //Do not forget this line. you need to create new model for saving each time.
            if ($this->request->isPost()) {
                $this->Checkout->create();
                $this->Checkout->save($data);
            } else {
                $this->request->data['Checkout']['product_id'] = $productId;
            }
        }
        $this->redirect(array('action' => 'index'));
    }
    $products = $this->Checkout->Product->find('list');
    $users = $this->Checkout->User->find('list');
    $this->set(compact('products', 'users'));
    $this->set('count', $count);
}

ご覧のとおり、うまくいくかもしれないと思った帽子を追加しようとしましたが、製品インデックス ページの [送信] ボタンは何もしません。どんな助けでも大歓迎です!

4

1 に答える 1

0

私は数回チェックするだけで、少なくとも失敗の理由の1つがforeachの中にあることを理解していerrorますwarning.

<?php $products=array('0'=>'11','1'=>'22','2'=>'333');
echo $this->Form->create('User');?>
<?php foreach ($products as $product): ?>
<tr class="hovertable">
    //All the fields go here
    <td style="cursor: default">

        <?php echo $this->Form->input('Product.id.'.$product,
            array('label' => false,
                  'type' => 'checkbox',
                  'id'=>'listing_'.$product)); ?>
    </td>
</tr>
 <?php
 endforeach;

echo $this->Form->end(__('Submit')); 

エラーや警告がない場合は、なしで確認することをお勧めします

$this->Form->postLink

于 2013-03-21T17:33:41.997 に答える