Symfony-Twig-修改或删除资源并返回页面的超文本链接

时间:2019-08-25 08:32:36

标签: php symfony twig

我有一个使用Symfony / Twig的网站,该网站在页面上列出了活跃的问题。每个问题的标题旁边都有一个“接受”链接。 “接受”链接是一个超文本链接,链接到包含问题标识符的路由(例如:/issues/{id}/accept)。单击链接后,将调用accept Symfony操作。这个Symfony动作只是将问题的状态从“新建”更改为“接受”,然后重定向到当前页面。

一切正常。

我唯一的问题是:href链接使用GET方法并在服务器端修改问题资源。 GET不应修改资源。对于“删除”链接,我可能会遇到相同的问题,该问题将使用GET方法(超链接)来调用删除资源的Symfony操作。

就我而言,可以使用超链接(GET方法)来修改/删除资源,还是我需要尝试使用POST方法(通过表单)或实现一些JavaScript,然后使用PUT或补丁?是否有任何简单的方法可以仅使用Symfony和Twig(不使用JS)来防止该问题?

1 个答案:

答案 0 :(得分:2)

您无需在Symfony中使用JavaScript即可在没有JavaScript的情况下使用POSTPUTPATCHDELETE方法。只需使用常规的HTML表单即可。

有一个配置选项http_method_override,可让您将HTTP方法设置为DELETE,如下所示。

在树枝模板中:

{{ form_start(form, {'action': path('target_route'), 'method': 'DELETE'}) }}

在控制器中创建期间:

$form = $this->createForm(TaskType::class, $task, [
    'action' => $this->generateUrl('target_route'),
    'method' => 'DELETE',
]);

在文档章节中进一步了解此内容:Changingg the Action and HTTP Method