CakePHP自动用另一个字段的值填充一个字段

CakePHP自动用另一个字段的值填充一个字段,php,cakephp,foreign-keys,fullcalendar,Php,Cakephp,Foreign Keys,Fullcalendar,我用的是蛋糕2.3.1 在我的事件/添加视图中,我有以下字段: echo $this->Form->input('customer_id', array('label' => 'Customer: ')); echo $this->Form->input('title', array('type' => 'hidden')); 这是一个输入选择表单,其中包含我的所有客户。 现在我需要这个: echo $this->Form->input('ti


我用的是蛋糕2.3.1
在我的事件/添加视图中,我有以下字段:

echo $this->Form->input('customer_id', array('label' => 'Customer: '));
echo $this->Form->input('title', array('type' => 'hidden'));
这是一个输入选择表单,其中包含我的所有客户。 现在我需要这个:

echo $this->Form->input('title', array('type' => 'hidden'));
自动填入我在上述字段中选择的客户名称
如何做到这一点?

echo $this->Form->input('title', array('type' => 'hidden'));
关系:

echo $this->Form->input('title', array('type' => 'hidden'));
客户有许多事件(外键->客户id)

echo $this->Form->input('title', array('type' => 'hidden'));

在一个根据选择而变化的表单中设置隐藏值不是一个好主意。由于最终用户可以轻松地更改其值,或者可能完全禁用了Javascript(这对于动态更改是必需的),因此它是不可信的。最好在事件模型的beforeSave方法中保存表单时获取标题。例如:

echo $this->Form->input('title', array('type' => 'hidden'));
function beforeSave($options = array()) {
    if (isset($this->data[$this->alias]['customer_id'])) {
        // Set the Customer.name field as Event.title
        $this->data[$this->alias]['title'] = $this->Customer->field(
            'name', array(
                // The condition for the find operation on this customer
                'id' => $this->data[$this->alias]['customer_id']
             )
        );
    }

    return true;
}

在一个根据选择而变化的表单中设置隐藏值不是一个好主意。由于最终用户可以轻松地更改其值,或者可能完全禁用了Javascript(这对于动态更改是必需的),因此它是不可信的。最好在事件模型的beforeSave方法中保存表单时获取标题。例如:

echo $this->Form->input('title', array('type' => 'hidden'));
function beforeSave($options = array()) {
    if (isset($this->data[$this->alias]['customer_id'])) {
        // Set the Customer.name field as Event.title
        $this->data[$this->alias]['title'] = $this->Customer->field(
            'name', array(
                // The condition for the find operation on this customer
                'id' => $this->data[$this->alias]['customer_id']
             )
        );
    }

    return true;
}


谢谢你的回复。我试过了,但在正确保存后,我得到了“Event.title”为空。您忘记了检查
isset($this->data[$this->alias]['customer\u id'))
好的,我设法理解出了什么问题。设置了cust_id,但在调用beforeSave()时,它无法完成其工作。我用作源的字段是一个虚拟字段。可能会干扰吗?我试过最后一个。控制器未能调用beforeSave()。事件控制器和事件模型位于/plugin/FullCalendar.,而客户位于app/MVC。我读了一些关于必须正确设置文件路径和扩展名的内容。。(…这意味着我没有任何线索)我尝试这样做:
函数在保存之前($options=array()){if(isset($this->data[$this->alias]['customer\u id']){$this->data[$this->alias]['title']='I am title';}返回true;}
但是我的title字段仍然是空的。。。但不能为空,因为需要“title”。我想不出如何使这东西工作。谢谢你的答复。我试过了,但在正确保存后,我得到了“Event.title”为空。您忘记了检查
isset($this->data[$this->alias]['customer\u id'))
好的,我设法理解出了什么问题。设置了cust_id,但在调用beforeSave()时,它无法完成其工作。我用作源的字段是一个虚拟字段。可能会干扰吗?我试过最后一个。控制器未能调用beforeSave()。事件控制器和事件模型位于/plugin/FullCalendar.,而客户位于app/MVC。我读了一些关于必须正确设置文件路径和扩展名的内容。。(…这意味着我没有任何线索)我尝试这样做:
函数在保存之前($options=array()){if(isset($this->data[$this->alias]['customer\u id']){$this->data[$this->alias]['title']='I am title';}返回true;}
但是我的title字段仍然是空的。。。但不能为空,因为需要“title”。我不知道该怎么做。为什么要以相同的形式设置一个字段,这只是您已经知道的select选项的值?这是因为FullCalendar jquery需要一个“title”字段,这是必需的。我试着编辑它,发现这是一个更简单的解决方案。你最好询问如何实现你的最终目标(例如,如何使用选择来填充新事件的标题,使用x插件),指出你尝试了什么,而不是只询问你选择的解决方案。在问这个问题之前,我尝试了你刚才建议的方法,但我被斥责了,因为一个“问题”中的问题太多了,所以我删除了那个问题,尝试了一些简单的方法。顺便说一句,我认为你是对的,但有时问一些简单的问题就意味着得到答案;)我只问了一个问题,但我想这取决于对阅读者的理解。。我解释了我尝试过的每一个解决方案,尽量严格。。我想我应该在这里学写字。。(可能是英语,因为我的词汇量很差。)为什么要以相同的形式设置字段,这只是您已经知道的select选项的值?这是因为FullCalendar jquery需要一个“title”字段,这是必需的。我试着编辑它,发现这是一个更简单的解决方案。你最好询问如何实现你的最终目标(例如,如何使用选择来填充新事件的标题,使用x插件),指出你尝试了什么,而不是只询问你选择的解决方案。在问这个问题之前,我尝试了你刚才建议的方法,但我被斥责了,因为一个“问题”中的问题太多了,所以我删除了那个问题,尝试了一些简单的方法。顺便说一句,我认为你是对的,但有时问一些简单的问题就意味着得到答案;)我只问了一个问题,但我想这取决于对阅读者的理解。。我解释了我尝试过的每一个解决方案,尽量严格。。我想我应该在这里学写字。。(因为我的词汇量很差,所以可能用英语)