【问题标题】:CakePHP automatically filling a field with the value of anotherCakePHP 自动用另一个字段的值填充字段
【发布时间】:2013-03-26 15:04:46
【问题描述】:


我正在使用蛋糕 2.3.1。
在我的事件/添加视图中,我有这个字段:

echo $this->Form->input('customer_id', array('label' => 'Customer: '));

这是一个输入选择表单,其中包含我所有的客户。 现在我需要这个:

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

自动填写我在上面的字段中选择的客户名称。
如何做到这一点?

关系:

Customer HasMany 事件(外键 -> customer_id)

【问题讨论】:

  • 为什么要在同一个表单中设置一个字段,这只是一个你已经知道的select选项的值?
  • 那是因为 FullCalendar jquery 需要一个 'title' 字段,这是必需的。我尝试对其进行编辑,并发现这是一个更简单的解决方案。
  • 您最好询问如何实现您的最终目标(例如,如何使用选择来填充新事件的标题,使用 x 插件),指出您尝试过的内容,而不是只询问您选择的解决方案。可能有更好的方法来做到这一点。
  • 在问这个问题之前,我尝试了你刚才的建议,但我被斥责了,因为一个“问”中的问题太多了,所以我删除了那个并尝试了一些简单的东西。顺便说一句,我认为你是对的,但有时提出简单的问题意味着得到答案;)
  • 我问了一个问题,但我想这取决于对谁阅读的解释。我在解释我尝试过的每一个解决方案,尽可能严格。我想我应该学习如何写在这里..(可能是英文,因为我的词汇量很差..)

标签: php cakephp foreign-keys fullcalendar


【解决方案1】:

在表单中设置隐藏值并不是一个好主意,该表单会根据选择而变化。由于最终用户可以轻松更改其值,或者可能完全禁用 Javascript(即时更改需要这样做),因此它不值得信赖。最好在 Event 模型的 beforeSave 方法中保存表单后获取标题。例如:

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_id'])
  • 好的,我设法理解出了什么问题。 cust_id 已设置,但在调用 beforeSave() 时,它无法完成工作。我用作源的字段是 VirtualField。会不会干扰?
  • 尝试了最后一个。控制器未能调用 beforeSave()。 EventsController 和 Event 模型位于 /plugin/FullCalendar. 中,而 Customer 位于 app/MVC 中。我读了一些关于必须正确设置的文件路径和扩展名的内容。(...这意味着我不知道)
  • 我试图这样做:function beforeSave($options = array()) { if (isset($this->data[$this->alias]['customer_id'])) { $this->data[$this->alias]['title'] = 'I am a title'; } return true; } 但我的标题字段仍然是空的......但不是空的,因为需要“标题”。我不知道如何使这件事发挥作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 2011-03-18
  • 1970-01-01
  • 2019-06-12
  • 1970-01-01
相关资源
最近更新 更多