2

使用已嵌入 CRUD的代码,我有以下用于删除项目的代码:

<?php echo $this->Form->postLink(__('Delete'), array('controller'=>'attachments', 'action' => 'delete', $attachment['Attachment']['id']), null, __('Are you sure you want to delete "%s?"', $attachment['Attachment']['name'])); ?>

问题是它包含在一个 FORM 标记中,所以最终发生的事情是Cake 不包括 postLink 将提交的表单

是否有另一种方法仍然适用于即使我增加安全设置也可以工作的 Cake 基础设施的完整性?可能需要成为 /attachment/delete/id 的链接,但是由于某种原因烘焙选择创建一个表单并发布它而不是创建一个链接,所以我认为这是有原因的,如果是这样,我想坚持这一点原因。

4

2 回答 2

6

您可能没有阅读文档块中有关此方法的警告(http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::postLink

此方法创建一个<form>元素。所以不要在现有表单中使用此方法。相反,您应该使用添加提交按钮FormHelper::submit()

所以不要那样做。您需要写入缓冲区并稍后输出(请参阅此关闭的 PR)。

于 2013-11-14T10:06:48.800 回答
1

我在 cakephp 3.0 中遇到同样的问题 $this->Form->postLink()不适用于第一次进入。

然后我做了一些研发,但没有发现任何有用的东西。然后我对表单标签和$this->Form->postLink(). 我 $this->Form->create()从 .ctp 文件中删除并仅使用$this->Form->postLink();它并开始工作。

不要使用$this->Form->postLink()内部任何其他表单标签,即$this->Form->create(null, ['url' => ['action' => 'ExportCustomers']]);

如果你想要两者,那么你必须$this->Form->postLink()根据它调整和表单标签不会相互影响。

于 2017-05-18T10:57:43.407 回答