第一个 postLink() 不创建表单


First postLink() doesn't create form

使用已烘焙到 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 的链接,但烘焙出于某种原因选择创建一个表单并发布它而不是创建一个链接,所以我认为这是有原因的,如果是这样,我想坚持这个原因。

您可能

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

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

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

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

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

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

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