2016-12-04 35 views
-1

你有一個頁面ActiveForm作爲主記錄,網格作爲子記錄,我如何使它們之間的關係。創建時沒有主記錄的ID!任何建議都是好的! TIA。 Asim如何引用網格到ActiveForm

+0

不太清楚。請提供更多信息和/或您編寫的任何代碼。 –

回答

0

沒有必要使用模態來添加子對象。你可以用一種形式做到這一點。如果使用模態,則需要先創建父對象,然後再顯示該模態。這樣,你的擔心就會失效。

如果要以一種形式添加父項和子項,則可以將兩個對象傳遞給視圖,然後將它們的域放入窗體中。然後在表單提交中,您驗證兩個對象,然後如果一切正常,請保存父項,然後保存子項,將父項ID分配給子項。您可以在交易中執行此操作,以便如果孩子失敗,父母不會被錄音,反之亦然。

下面是一些代碼:

class YourController extends Controller 
{ 
    public function actionSomething() 
    { 
     $parent = new Parent(); 
     $child = new Child(); 

     $request = Yii::$app->request; 
     if ($parent->load($request->post('Parent')) && $child->load($request->post('Child'))) { 
      // Do validation and if everything is fine, then save the fields 
      Yii::$app->db->transaction(function() { 
       $parent->save(false); 

       $child->parent_id = $parent->id; 
       $child->save(false); 
      }); 
     } 
     return $this->render('view', compact('parent', 'child')); 
    } 
} 

的觀點:

$form = ActiveForm::begin() ?> 

    <?= $form->field($parent, 'fieldA') ?> 
    <?= $form->field($parent, 'fieldB') ?> 
    <?= $form->field($child, 'fieldA') ?> 
    <?= $form->field($child, 'fieldB') ?> 

...other input fields... 

<?= Html::submitButton('Save', ['class' => 'btn btn-primary']) ?> 

你明白我的意思?如果您有問題或疑問,請詢問。這是另一個例子。這是一個更新,但這個想法是一樣的:

Getting Data for Multiple Models

+0

謝謝ntraykov!但是如果我有100個兒童記錄呢!這種情況是什麼情況?表格輸入不適合我的用法。 TIA。 Asim – user2071946

+0

請詳細解釋你想要達到的目標。你沒有說'多個'孩子。如果您想要放置多個孩子,請先創建父級,然後再將這些孩子添加到另一個操作中。例如,您可以創建僅添加父母的父頁面,然後創建只添加子項的子頁面。另一種方法是使用ajax。你有父母創建,然後你有一個按鈕,當你按下這個按鈕,一個子表單附加。如果你推'n'次,'n'兒童表格會出現... –

+0

如果你堅持,你可以把paren和孩子放到一個表格中。使用Javascript,你可以添加多個孩子,然後發送整個表單到服務器... –