【问题标题】:How to create cakephp form with recursive models如何使用递归模型创建 cakephp 表单
【发布时间】:2011-08-25 22:07:42
【问题描述】:

我正在尝试创建一个使用 HABTM 关系的表单。连接表的字段是另一个表的外键。我需要在这些字段之一中输入数据。有可能吗?

示例。

model1 (id, field1, field2) 模型 2(ID,字段 1,字段 2) model3 (id, field1, field2)

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

该表单将包含来自 model1 和 model1 的字段,没有问题,但 joinmodel->model1(field1) 的字段让我很着迷。

我不确定这是否完全清楚我要完成的工作。如果这没有意义,我将发布我的真实模型数据。

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    我相信这是可以做到的,在声明表单元素时,您可以执行以下操作:

    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 中的正确字段,然后保存模型 2。当然都在控制器中。

    【讨论】:

      【解决方案2】:

      如果你有相关的表格并且你想输入表格,那么你可以输入这样的内容。

      $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);
      

      Model 是您在哪个视图中创建表单的主要模型。 这也将应用所有模型验证。

      在控制器中保存时,您可以使用

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

      【讨论】:

        猜你喜欢
        • 2012-06-29
        • 1970-01-01
        • 1970-01-01
        • 2020-07-04
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 2017-07-08
        相关资源
        最近更新 更多