在Symfony中配置一个具有相同URL但不同HTTP方法和控制器动作的路由。[英] Configuring a route in Symfony with the same URL but different HTTP methods and controller actions

本文是小编为大家收集整理的关于在Symfony中配置一个具有相同URL但不同HTTP方法和控制器动作的路由。的处理方法,想解了在Symfony中配置一个具有相同URL但不同HTTP方法和控制器动作的路由。的问题怎么解决?在Symfony中配置一个具有相同URL但不同HTTP方法和控制器动作的路由。问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我在 Symfony 应用程序中有以下路由配置:

label:
  url:          /label
  param:        { module: label, action: configure }
  requirements: { sf_method: get }

label_create:
  url:          /label
  param:        { module: label, action: create }
  requirements: { sf_method: post }

链接到 executeConfigure 和 executeCreate 动作.然后我有一个这样配置的表单:

<form action="<?php echo url_for('@label_create') ?>" method="POST">
  <?php echo $form->renderHiddenFields() ?>
  <input type="hidden" name="sf_method" value="post" />
  <!-- more stuff here -->
</form>

每当提交表单时,都会执行 executeConfigure,尽管据我所知,使用 POST 方法配置的路由应该避免这种情况并执行 executeCreate.

如何区分这两个保持相同 URL 的操作?

谢谢!

推荐答案

我也遇到了这个问题,并在旧论坛消息中找到了答案(http://oldforum.symfony-project.org/index.php/t/25750/).

如果它完全忽略了请求方法,那么它很可能使用常规的 sfRoute.您需要使用 sfRequestRoute 使路由"方法感知".因此,在您的示例中,您将执行以下操作:

label:
  url:          /label
  class:        sfRequestRoute
  param:        { module: label, action: configure }
  requirements: { sf_method: get }

label_create:
  url:          /label
  class:        sfRequestRoute
  param:        { module: label, action: create }
  requirements: { sf_method: post }

本文地址:https://www.itbaoku.cn/post/1793741.html