第一个postLink()不创建表单

时间:2013-11-14 02:47:57

标签: php cakephp post

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

2 个答案:

答案 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()和表格标签,因为它不会相互影响。

相关问题