我尝试使用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 ]
];
}
}
我会感谢任何帮助或指导。不是要寻找粘贴在我的项目中的神奇代码,而是要学习如何去做,因为我可能不得不在我当前的项目中做类似的事情。提前谢谢!