2017-01-17 12 views
0

フォームには2つのモデルがあります。 1つのモデルがマスターであり、1つのモデルが接合テーブル(モデル)として表されています。yii2のチェックボックスフォームでの検証

Relation

内容:

request_table : $model, 
link_req_tipe : $modelLinkReqTipe; 

私の目標は、

  1. は、私はその後、私は$モデル - > ID
  2. Iバッチ挿入を取得し、$モデルを保存し、ありますto link_req_item

    id_request = $モデル - > IDid_tipe = modelLinkReqTipe-> id_tipe

は、ここでは、PHPである:多くの入力、多くの理由

_form.php(単なる例、

フォーム)

<?= $form->field($model, 'karyawan_id')->dropDownList(
       ArrayHelper::map(Karyawan::find()->all(), 'id', 'first_name'), ['prompt' => 'Select Karyawan']) 
?> 

<?= $form->field($modelLinkReqTipe, 'id_tipe')->checkBoxList(ArrayHelper::map(TipeRequest::find()->all(), 'id', 'nama_tipe')); 
?> 

RequestController

if ($model->load($request->post()) && $modelLinkReqTipe->load(Yii::$app->request->post())) { $valid = $model->validate(); $valid = $modelLinkReqTipe->validate() && $valid; if ($valid) { ## Check validate : true $transaction = Yii::$app->db->beginTransaction(); try { if ($flag = $model->save(false)) { foreach ($modelLinkReqTipe as $index => $modelLinkReqTipe) { if ($flag === false) { break; } $modelLinkReqTipe->id_request = $model->id; if (!($flag = $modelLinkReqTipe->save(false))) { break; } } } if ($flag) { $transaction->commit(); } else { $transaction->rollBack() } } catch (\Exception $e) { $transaction->rollBack(); } return [ 'forceReload' => '#crud-datatable-pjax', 'title' => "Create new Request", 'content' => '<h1 class="text-success">Success</h1>, 'footer' => Html::button('Close', ['class' => 'btn btn-default pull-left', 'data-dismiss' => "modal"]) . Html::a('Create More', ['create'], ['class' => 'btn btn-primary', 'role' => 'modal-remote']) ]; }else{ ## Check validate : false return [ 'title' => "Create New Request", 'content' => $this->renderAjax('create', [ 'model' => $model, 'modelLinkReqTipe' => (empty($modelLinkReqTipe)) ? new LinkReqTipe() : $modelLinkReqTipe, 'modelLinkReqItem' => (empty($modelLinkReqItem)) ? [new LinkReqItem] : $modelLinkReqItem, ]), 'footer' => Html::button('Close', ['class' => 'btn btn-default pull-left', 'data-dismiss' => "modal"]) . Html::button('Save', ['class' => 'btn btn-primary', 'type' => "submit"]) ]; } 

今、検証に問題があります。 送信時に常にfalseが返されます。 false validation お願いします。

答えて

1

この問題を解決する方法はたくさんあります。検証の際に$modelLinkReqTipeの属性id_requestが考慮されていないことを確認する最良の方法は、検証する属性の配列をの関数で提供することです。validate(['id_tipe'])

関連する問題