Yii で 1 つのフォームだけを使用して複数のレコードを追加する方法を知っている人はいますか? すべてのレコードは同じモデルに属し、同じ形式です。
どうもありがとう、
ニック
Yii で 1 つのフォームだけを使用して複数のレコードを追加する方法を知っている人はいますか? すべてのレコードは同じモデルに属し、同じ形式です。
どうもありがとう、
ニック
ガイドの「 batchUpdate」と同等の「batchCreate」メソッドは、次のようになります。
public function actionBatchCreate() {
$models=array();
// since you know how many models
$i=0;
while($i<5) {
$models[]=Modelname::model();
// you can also allocate memory for the model with `new Modelname` instead
// of assigning the static model
}
if (isset($_POST['Modelname'])) {
$valid=true;
foreach ($_POST['Modelname'] as $j=>$model) {
if (isset($_POST['Modelname'][$j])) {
$models[$j]=new Modelname; // if you had static model only
$models[$j]->attributes=$model;
$valid=$models[$j]->validate() && $valid;
}
}
if ($valid) {
$i=0;
while (isset($models[$i])) {
$models[$i++]->save(false);// models have already been validated
}
// anything else that you want to do, for example a redirect to admin page
$this->redirect(array('modelname/admin'));
}
}
$this->render('batch-create-form',array('models'=>$models));
}
ここでの唯一の懸念事項は、保存するモデルごとに、 を使用して新しいインスタンスをnew
作成する必要があることです。残りのロジックは、任意の方法で実装できます。たとえば、上記の例では、すべてのモデルが検証されてから保存されますが、モデルが無効な場合は検証を停止するか、モデルを直接保存することができます。呼び出し中に検証が行われるようにしsave
ます。したがって、ロジックは実際にはアプリの ux に依存します。