2012-04-09 5 views
0

私はテーブルspecsを持っています。私は1つのフォームでそれから複数の行を編集し、すぐにそれを保存する必要があります。マルチペードレコードのフォームヘルパーを使用

// table structure 
specs [id, name, value, owner_id] 
// controller part 
$data = $this->Spec->find('all'); // skipping the conditions and other sub-code 
$data = set::combine(...); 
/* 
result, keyed using the spec[id] column. 
array (
    [3] = array(id=>...), 
    [22] = array(id=>...) 
) 
*/ 

ここでは続ける方法がわかりません。 新しい複数のレコード(モデル。{n} .fieldname)を作成する準備が整っているフォームを作成する方法を知っていますが、saveAll()を許可する「編集」フォームを作成するにはどうすればよいですか?結果の配列を反復処理しようとして

は、フォームのクローズを取得します..しかし、私は、入力要素のフィールドの値を参照することはできません。..

答えて

0

あなたがこの試すことができます:コントローラで

を:ビューで

public function edit() { 
    $products = $this->Product->find('all'); 
    if (!empty($this->data)) { 
     if ($this->Product->saveAll($this->data['Product'])) { 
      $this->Session->setFlash('ok'); 
     } else { 
      $this->Session->setFlash('not ok'); 
     } 
    } else { 
     $this->data['Product'] = Set::extract($products, '{n}.Product'); 
    } 
    $this->set(compact('products')); 
} 

echo $this->Session->flash(); 

echo $this->Form->create('Product'); 

foreach ($products as $i => $product) { 
    echo $this->Form->input("$i.id"); 
    echo $this->Form->input("$i.name"); 
} 

echo $this->Form->end('Save'); 

PS:私はあなたが私のを適応させることができると思いますあなたのニーズに合った例はありますか? :)

関連する問題