0

ファン、

データベースに複数のエントリを保存しようとしています。

例:

index.ctp

echo $this->Form->create('Item');
echo $this->Form->input('0.Item.name');
echo $this->Form->input('1.Item.name');
echo $this->Form->end('save');

アイテム.php

class Item extends AppModel {
  var $validate = array(
    'name' => 'email'
  );
}

ItemsController.php

public function index() {
  if($this->request->is('post')){
    if($this->Item->saveAll($this->request->data))
        $this->Session->setFlash("saved successful");
      else{
        $this->Session->setFlash("saving error");
        debug($this->Item->validationErrors);
      }
  }
}

電子メール以外の値を保存しようとすると、「保存エラー」が表示されますが、入力フィールドのメッセージは表示されません。validationError は次のとおりです。

array(
    (int) 0 => array(
        'name' => array(
            (int) 0 => 'This field cannot be left blank'
        )
    ),
    (int) 1 => array(
        'name' => array(
            (int) 0 => 'This field cannot be left blank'
        )
    )
)

誰でも私を助けることができますか?

編集:

$this->request->data のデバッグ

array(

    (int) 0 => array(
        'Item' => array(
            'name' => 'test'
        )
    ),
    (int) 1 => array(
        'Item' => array(
            'name' => 'test2'
        )
    )
)
4

1 に答える 1

1

投稿されたデータを再フォーマットModel::saveMany()して代わりに使用することもできます (ドキュメントフィールド命名規則を参照してください)。

echo $this->Form->create('Item');
echo $this->Form->input('Item.0.name');
echo $this->Form->input('Item.1.name');
echo $this->Form->end('save');

そして、コントローラーの内部。

$this->Item->saveMany($this->request->data['Item']);

ただし、入力の名前を変更しても、既存のコントローラー コードはおそらく同様に機能するはずです。

テストされていません(私のコンピューターの背後ではありません)が、試してみる価値があります:)

于 2013-06-06T22:29:10.447 に答える