添加新的'有很多'实体没有覆盖现有实体

时间:2018-02-12 01:36:21

标签: php cakephp

我尝试使用Cakephp完成一项非常简单的任务,经过几天的阅读和尝试,我无法找到解决方案。我会尝试尽可能地解释它:

我有一个简单的'有很多'两个实体之间的关系('客户'和注释')。客户有很多笔记。

我有'编辑'客户端的页面,我希望在该页面中有这两个功能:

  • 阅读/查看所有现有笔记(只读)
  • 添加新笔记

因此,按照文档和几个示例,在我的编辑表单中,我编写了以下代码来生成新的笔记输入字段:

<?= $this->Form->control( 'client_notes.0.text' ); ?>

如果客户当然没有笔记,这工作正常。但是如果客户端有任何注释,则该字段会填充第一个注释,以便在保存操作中覆盖它。

我也试过了一种没有运气的不同方法:

我尝试添加其他输入字段,例如

<?= $this->Form->control( 'new_note' ); ?>

然后尝试创建一个新的注释&#39; ClientController上的实体,但这是我最困惑的地方。我应该修改传递给edit方法的requestData吗?最好的方法是怎样做的?我已经读过在cakephp中不再需要/建议修改requestData。

到目前为止,我做过的最后一件事就是在“之前的麻烦”中做到这一点。正如我在那里看到的那样,但似乎我做不到,这是我的代码:

public function beforeMarshal(Event $event, ArrayObject $data, ArrayObject $options)
{
    if (isset($data['new_note'])) {
        $text = $data['new_note'];
        $data['client_notes'] = [
            ['text' => $text ]
        ];
    }
}

我会感谢任何帮助或指导。不是要寻找粘贴在我的项目中的神奇代码,而是要学习如何去做,因为我可能不得不在我当前的项目中做类似的事情。提前谢谢!

0 个答案:

没有答案