【问题标题】:Getting values from text box in controller and save it in another model从控制器中的文本框中获取值并将其保存在另一个模型中
【发布时间】:2013-05-18 05:45:40
【问题描述】:

我有一个名为 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);

   }
     }

【问题讨论】:

  • 是你的控制器动作中的数据
  • @liyakat 我没有在控制器中获取数据..也没有保存

标签: cakephp controller views


【解决方案1】:

只是一些观察:

观察 1

表单关联数据的模型是User,而不是Defineroute。如果两个模型的字段相同,则必须取消引用 $this-&gt;data 属性中的 User 模型。

所以不要这样做:

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

做:

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

更新

如果您通过pr($this-&gt;data) 调试您的帖子数据,您应该会看到以下内容:

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

这就是为什么如果您执行$this-&gt;data['User'],您将只获得Defineroute 模型的字段。

观察 2

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

观察 3

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

【讨论】:

  • 观察 1 - 我想将数据保存到 defineroute 表中。我为此创建了一个模型Defineroute。 Observation2-每次我想往defineroute表中添加数据,那么就需要$this->Defineroute->create();有必要吗???
  • 观察 1:这很好,但是您的表单使用 User 模型键入您的字段,而您的 Defineroute 表不知道该模型;这就是为什么我说取消引用它。观察 2:你不是在循环中做的,所以不是。我猜您每次提交表单(回发到服务器)都会添加一个Defineroute。模型的活动记录不会在请求之间持久化,因此您不必担心。
  • 那么如何直接添加字段数据到defineroute
  • 没关系,但是您的表单使用您的 Defineroute 表不知道的 User 模型键入字段 - 这是如何解决它的问题。define route 和 user 表是不同的。只有两个字段相同
  • @SibinF,如果您更新您的问题以包含一些描述您希望$this-&gt;data 包含的内容的代码,它可能对其他人有用?从我的角度来看,我真的看不出你在做什么有什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
  • 2016-02-12
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
相关资源
最近更新 更多