2016-07-27 72 views
1

我在同一視圖中有兩種形式,每種形式來自不同的實體/模型。用一個請求提交多個表單

我想提交他們一個請求,如果可能的話,數據應該去相應的控制器+行動。

這又如何實現呢?

編輯:

我想編輯實體B,屬於實體A,以實體的形式。

一個有許多B.

+1

味道有點[** XY-ISH **](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)給我.. 。如果沒有你提供進一步的信息,我認爲這裏的任何人都無法幫助你,從首先需要兩種表格的理由開始。聽起來像一個奇怪的解決方案,你應該真正問過的問題。 – ndm

+0

@ndm當我編輯實體A時,我希望能夠在同一時間(在同一視圖中)編輯屬於實體A的實體B.如「A有許多B」一樣。 –

+1

你必須創建一個表單。該手冊介紹瞭如何爲關聯數據創建輸入[這裏](http://book.cakephp.org/3.0/en/views/helpers/form.html#creating-inputs-for-associated-data)以及如何保存相關的數據在你的控制器[這裏](http://book.cakephp.org/3.0/en/orm/saving-data.html#converting-request-data-into-entities) – arilia

回答

1

由於@arilia建議,我去槽的手冊。

if ($this->request->is('post')) { 

之後加入這BTABLE

$this->belongsTo('A', [ 
     'foreignKey' => 'auto_id', 
     'joinType' => 'INNER', 
    ]); 

和這對ATable

$this->hasMany('B'); 

在AController

首先我相關的表添加此爲的 '添加'動作,

$a= $this->A->patchEntity($a, $this->request->data, [ 
       'associated' => [ 
        'B' 
       ] 
      ]); 

在編輯動作我做了上述相同的步驟,以及函數簽名後,這個權利:

$a= $this->A->get($id, [ 
      'contain' => ['B'] 
     ]); 

它解決了這個問題,因爲現在我可以只用一個表格編輯相關實體。

感謝@arilia