Symfony - Twig - 修改或删除资源和 returns 页面的超文本 link
Symfony - Twig - Hypertext link that modifies or deletes a resource and returns a page
我有一个 Symfony/Twig 的网站,它在一个页面上列出了活跃的问题。每期的标题旁边都有一个 "Accept" link。 "Accept" link 是超文本 link linking 到包含问题标识符的路由(例如:/issues/{id}/accept
)。单击 link 时,将调用 accept
Symfony 操作。此 Symfony 操作只是将问题的状态从 "New" 更改为 "Accept" 并重定向到当前页面。
一切正常。
我唯一的问题是:href link 使用 GET 方法并在服务器端修改问题资源。 GET 不应修改资源。对于 "Remove" link,我可能会遇到同样的问题,它会使用 GET 方法 (hyperlink) 来调用删除资源的 Symfony 操作。
就我而言,可以使用 hyperlink(GET 方法)来 modify/remove 资源,还是我需要尝试使用 POST 方法(使用表格)或实施一些 JavaScript 然后使用 PUT 或 PATCH ?有什么简单的方法可以仅使用 Symfony 和 Twig(不使用 JS)来防止该问题吗?
您不需要使用 JavaScript 来使用没有 JavaScript 的 POST
、PUT
、PATCH
或 DELETE
方法在 Symfony 中。只需使用常规 HTML 形式。
有一个配置选项 http_method_override
允许您将 HTTP 方法设置为 DELETE
,如下所示。
在 Twig 模板中:
{{ 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
我有一个 Symfony/Twig 的网站,它在一个页面上列出了活跃的问题。每期的标题旁边都有一个 "Accept" link。 "Accept" link 是超文本 link linking 到包含问题标识符的路由(例如:/issues/{id}/accept
)。单击 link 时,将调用 accept
Symfony 操作。此 Symfony 操作只是将问题的状态从 "New" 更改为 "Accept" 并重定向到当前页面。
一切正常。
我唯一的问题是:href link 使用 GET 方法并在服务器端修改问题资源。 GET 不应修改资源。对于 "Remove" link,我可能会遇到同样的问题,它会使用 GET 方法 (hyperlink) 来调用删除资源的 Symfony 操作。
就我而言,可以使用 hyperlink(GET 方法)来 modify/remove 资源,还是我需要尝试使用 POST 方法(使用表格)或实施一些 JavaScript 然后使用 PUT 或 PATCH ?有什么简单的方法可以仅使用 Symfony 和 Twig(不使用 JS)来防止该问题吗?
您不需要使用 JavaScript 来使用没有 JavaScript 的 POST
、PUT
、PATCH
或 DELETE
方法在 Symfony 中。只需使用常规 HTML 形式。
有一个配置选项 http_method_override
允许您将 HTTP 方法设置为 DELETE
,如下所示。
在 Twig 模板中:
{{ 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