0

我有一个名为 users_controller 的控制器,一个名为 getdata().getdata.ctp 的操作是与该操作对应的视图。在那个视图中,我添加了一个名为 route.ctp 的元素,其中包含来自 data.my 的问题是我想从 getdata() 方法中的表单元素中检索所有 vaue 并将其保存在另一个模型 Route.How 我们可以做到这一点?为此,我在元素 route.ctp 中编写表单操作

    <?php echo $this->Form->create('User', array('url' => array('action' => 'getdata'))); ?>

在 users_controllers getdata() 动作中,我写

    function getdata()
          {
     $this->commuter(); // it call a function commuter() in this same controller for displaying some data in the view.
   $this->layout='custm';
   $this->loadModel('Defineroute');
   if (!empty($this->data) )
   {
       $this->Defineroute->create(); //Defineroute is a model. in this model i want save the form date. for that i created one table "defineroutes"


       $this->Defineroute->save($this->data);

   }
     }
4

1 回答 1

1

只是一些观察:

观察 1

表单关联数据的模型 isUser和 not Defineroute。如果两个模型的字段相同,则必须取消引用属性User中的模型$this->data

所以不要这样做:

$this->Defineroute->save($this->data);

做:

$this->Defineroute->save($this->data['User']);

更新

如果您通过执行 a 来调试您的帖子数据pr($this->data),您应该会看到以下内容:

array('User' => array(/*Your User fields*/))

这就是为什么如果您这样做$this->data['User'],您将只获得Defineroute模型的字段。

观察 2

您实际上不需要打电话$this->Defineroute->create();,因为您只为每个请求创建一条记录,因此实际上不需要重置模型中的活动记录。

观察 3

$this->commuter();只要它们是实用程序函数而不是操作,就可以调用另一个控制器函数。这样做的原因是您在控制器操作之间创建了依赖关系,如果您将来更改一个,您可能会破坏另一个。如果函数从一个模型设置视图变量,请考虑将代码转移到模型本身。

于 2013-05-18T08:34:25.353 回答