将数据从 cakephp 视图传递给控制器

Posted

技术标签:

【中文标题】将数据从 cakephp 视图传递给控制器【英文标题】:passing data to controller from view in cakephp 【发布时间】:2014-05-08 10:31:46 【问题描述】:

我是 cakephp 新手。我浏览了 Andrew Perkins 的视频教程。对于绝对初学者来说,这是一个很棒的教程。 我想要做的是将用户名从登录页面获取到隐藏字段并将其保存在视图中。并将其传递给控制器​​并在必要时将其保存到数据库中。

现在我有一个 add.ctp,BabiesController.php 作为控制器,baby.php 作为模型。 因为我还没有完成登录页面,所以我想对用户名进行硬编码。

这是我的代码。希望你们能帮助我。 这是 database.emails 地址已用作 babyprents 表的主键。baby 表中的 parent 列是 babyparents 表中电子邮件地址的外键。

型号:baby.php

<?php

class Baby extends AppModel 

    var $name = 'Baby';


控制器:BabiesController.php

<?php

class BabiesController extends  AppController 
var $name = 'Baby';

function index()

    $this->set('babies',$this->Baby->find('all'));


function  add()

    if(!empty($this->data))
    
        $this->Session->setFlash($this->data);
        if($this->Baby->save($this->data))
        
            $this->Session->setFlash('Successful');
            $this->redirect(array('action'=>'index'));
        
        else
            $this->Session->setFlash('unsuccessful');
        

    


查看:add.ctp

<h2>Sign up</h2>
<?php
echo $this->form->create('Baby',array('action'=>'add'));


echo $this->form->input('firstName');
echo $this->form->input('middleName');
echo $this->form->input('lastName');
echo $this->form->input('birthday');
echo $this->form->input('age');
echo $this->form->input('doctor');
echo $this->form->end('Sign up');
?>

除电子邮件地址外,所有数据均已保存。任何指南将不胜感激。谢谢大家。

【问题讨论】:

请添加您正在使用的 cakephp 版本。 对此我很抱歉。我正在使用 cakephp-2.4.9 您的表格不完整?我没有看到电子邮件字段。 您的问题根本不清楚:您有用户登录吗?该用户是婴儿的父母,还是该用户是超级用户,可以将婴儿添加到任何父母。在第一种情况下,您应该已经将电子邮件存储在某处(即会话),在第二种情况下,您可以使用父母的所有电子邮件构建一个选择输入 【参考方案1】:

在您的控制器中使用 saveAll($this->data):

function  add()

if(!empty($this->data))

    $this->Session->setFlash($this->data);
    if($this->Baby->saveAll($this->data))
    
        $this->Session->setFlash('Successful');
        $this->redirect(array('action'=>'index'));
    
    else
        $this->Session->setFlash('unsuccessful');
    

  

在你的 add.ctp 中放这一行

echo $this->form->input('Babyparent.email');

【讨论】:

感谢您的快速回复。很抱歉,我需要将其保存在会话或某种变量中并将其传递给控制器​​以保存它。我不想提示用户输入电子邮件地址。再次感谢您。 我从登录页面获取电子邮件地址。因为我还没有实现登录页面。对于演示,我想硬编码答案。所以我可以应用它。 我假设您有一个“用户”表,其中存储了登录信息,包括电子邮件登录?在这种情况下,建立用户和babyparents 模型之间的关系。稍后,当您要显示数据时,还显示来自关系表的数据,例如 users.email。

以上是关于将数据从 cakephp 视图传递给控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从先前的 segue 传递给子视图控制器?

cakePHP 从自定义数组构建一个选择框

从按钮将值传递给视图控制器字典

将信息传递给模态视图控制器

Cakephp:保存数组值而不是整数

将对象从模板传递给 django 视图(控制器)