如何使用递归模型创建cakephp表单

时间:2011-08-25 22:07:43

标签: cakephp

我正在尝试创建一个使用HABTM关系的表单。连接表具有作为另一个表的外键的字段。我需要将数据输入其中一个字段。它甚至可能吗?

实施例

model1(id,field1,field2) model2(id,field1,field2) model3(id,field1,field2)

joinmodel(连接model1和model2的外键,但是属于model3。

表单中有来自model1和model1的字段没有问题,但是joinmodel-> model1(field1)的字段是我得到的。

我不确定这是非常清楚我想要完成的事情。如果这没有意义,我会发布我的真实模型数据。

2 个答案:

答案 0 :(得分: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,将ID分配给Model2中的相应字段,保存Model2。当然都在控制器中。

答案 1 :(得分: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);