为什么symfony中的帖子请求被识别为GET

时间:2013-09-11 08:13:03

标签: php symfony routing

我正在尝试将表单数据发布到/cart/order/edit/,但它似乎不起作用,更有趣的是它在本地工作但不是实时。

回复说

  

糟糕!发生错误
  服务器返回“0没有找到”GET / cart / order / edit /“的路径:方法不允许(允许:POST)”。

路由看起来像 (php app / console router:debug)

cart_order                        GET    /cart/order/
cart_order_edit                   POST   /cart/order/edit/
cart_order_save                   POST   /cart/order/save

这是routing.yml

#
# All routes are set up in controller source files in src/*Bundle/Controller/*Controller.php
# using annotations.
#

# Set up Bundle
CartBundle:
    resource: "@CartBundle/Controller/"
    type:     annotation
    prefix:   /

浏览器中的请求标题

  

POST / cart / order / edit / HTTP / 1.1

我试图找到一些感觉,但没有

以下是我发布的表格:

<form  action="/../cart/order/edit/" method="POST" id="orderForm">

控制器中的路由:

 * @Route
 * (
 *    "/cart/order/edit/",
 *    name="cart_order_edit"
 * )
 *
 * @Method({"POST"})

3 个答案:

答案 0 :(得分:0)

您尝试获取仅为POST请求配置的操作

你是否使用过这样的东西?

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;

/**
 * @Route("/blog")
 */
class PostController extends Controller
{
    /**
     * @Route("/edit/{id}")
     * @Method({"GET", "POST"})
     */
    public function editAction($id)
    {
    }
}

答案 1 :(得分:0)

如果您没有提供任何代码供参考,很难确切地说出错了什么。但是,您必须检查以下内容:

<强>的routing.yml
你的routing.yml文件怎么样?它应该与此类似:

route_needed:
    pattern: /cart/order/edit/
    defaults: { _controller: CartBundle:Default:edit }
    requirements:
          _method: POST

您的表单
你的表格看起来如何?它应该与此类似:

<form action="{{ path('route_needed' }}" method="post" {{form_enctype(edit)}}>
****whatever is in your form****
{{form_rest(edit)}}
</form>

但是,我们再次确切地知道问题是什么,因为您没有提供任何代码。但上面的例子来自我的一个有效的Symfony2项目。

答案 2 :(得分:0)

我遇到了同样的问题。 在我的情况下,.htaccess重定向我的请求。 我发了帖子,它重定向为get。 也许检查你的htaccess或服务器conf。