使用烘焙到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的链接,但烘焙由于某种原因选择创建一个表单并发布它而不是创建链接,所以我认为有一个原因,如果是这样我想坚持原因。
答案 0 :(得分:6)
您可能没有阅读doc块中有关此方法的警告 (http://book.cakephp.org/2.0/en/core-libraries/helpers/form.html#FormHelper::postLink)
此方法创建
添加提交按钮<form>
元素。所以不要在现有表单中使用此方法。 相反,您应该使用FormHelper::submit()
所以不要这样做。您需要写入缓冲区并稍后输出(请参阅this closed PR)。
答案 1 :(得分:1)
我在cakephp 3.0中遇到了同样的问题$this->Form->postLink()
没有用于第一次进入。
然后我做了一些R&amp; D但没有找到任何有用的。然后我在表单标记和$this->Form->postLink()
中进行了一些更改。我从.ctp文件中删除$this->Form->create()
并仅使用$this->Form->postLink();
并开始工作。
请勿在任何其他表单标记内使用$this->Form->postLink()
即$this->Form->create(null, ['url' => ['action' => 'ExportCustomers']]);
如果你想要两者,那么你必须调整$this->Form->postLink()
和表格标签,因为它不会相互影响。