2011-08-25 62 views
0

我試圖創建一個使用HABTM關係的表單。連接表的字段是另一個表的外鍵。我需要將數據輸入到其中一個字段中。它甚至有可能嗎?如何使用遞歸模型創建cakephp表單

例子。

MODEL1(ID,FIELD1,FIELD2) MODEL2(ID,FIELD1,FIELD2) model3(ID,FIELD1,FIELD2)

joinmodel(即加入MODEL1和MODEL2,但屬於關聯model3外鍵。

表單將有模型1和模型1的字段沒有問題,但字段爲joinmodel-> model1(field1)是什麼讓我。

我不知道這是完全清楚我想要完成。如果這沒有意義,我會發布我的真實模型數據。

回答

0

我相信這是可以做到,聲明你的表單元素時,你會做以下幾點:

echo $this->Form->input('Model1'); 
echo $this->Form->input('Model2'); 
echo $this->Form->input('Model3'); 
echo $this->Form->input('field'); 

然後在控制器,你會怎麼做$this->Model1->saveAll($this->data);

More info

另一種方式你可以按照順序保存模型數據讓我們假設Model2具有模型1和模型3的外鍵,然後首先保存模型1和3,將模型2中的適當字段分配給ID並保存模型2。當然,全部都在控制器中。

0

如果你有相關的表格,並且你想放置在表單中,那麼你可以把這樣的東西。

$this->Form->input('Model1.0.field1'); 
$this->Form->input('Model1.0.field2'); 
$this->Form->input('Model2.0.field1'); 
$this->Form->input('Model2.0.field2'); 

如果第二排,你可以給

$this->Form->input('Model1.1.field1'); 
$this->Form->input('Model1.1.field2'); 
$this->Form->input('Model2.1.field1'); 
$this->Form->input('Model2.0.field2'); 

等等...

最後,你可以通過使用

$this->Model->saveAll($this->data); 

保存在哪裏一次性全部數據模型是您創建表單的視圖中的主要模型。 這也將適用於所有的模型驗證。

同時節省控制器,你可以只使用

$this->Model1->saveAll($this->data);