【问题标题】:Post-Parameters as Action Input后参数作为动作输入
【发布时间】:2011-04-10 17:09:47
【问题描述】:

提交表单后我收到以下错误消息:

控制器 “Foo\ModelBundle\Controller\PostController::createAction()” 要求您提供一个值 "$title" 参数(因为那里 没有默认值或因为有 在此之后是一个非可选参数 一)。

表单不是由 symfony 框架表单功能创建的,它只是 twig 模板中的纯 html:

<form action="{{ path('post') }}" method="post">
        Title: <input name="title"><br>
        Author: <input name="author"><br>
        Content: <input name="content"><br>
        <input type="submit">
</form>

这是发布路由的路由信息​​:

post:
        pattern:        /post
        defaults:       { _controller: FooModelBundle:Post:create }
        requirements:
                _method:        POST

这是创建动作的定义:

public function createAction($title, $author, $content) {

请求的 symfony 分析器向我显示,$title、$author 和 $content 设置为正确的值。

为操作提供所需参数的正确方法是什么?

框架不应该用 POST 请求中的值填充它们吗?

我正在使用 symfony 2.0 PR 10。

也在这里交叉发布:http://forum.symfony-project.org/viewtopic.php?f=23&t=34427

【问题讨论】:

    标签: php routing symfony


    【解决方案1】:

    我已尝试在您最初在 http://forum.symfony-project.org/viewtopic.php?f=23&t=34427&p=115961#p115961 发布问题的地方为您回答这个问题

    想法是利用框架的表单生成功能,通过请求对象检索数据。

    我希望你会发现它很有帮助。

    【讨论】:

    • 谢谢这对我有帮助,只是为了澄清,我也会在这里发布我的答案。
    【解决方案2】:

    不使用框架表单生成和验证功能的原因如下:

    我想要实现的是使用一些动态数据对操作进行快速测试。 在这一点上,我不想为数据绑定和表单创建编写 x 行代码。这是下一步。

    我弄错的是路由中参数的概念。

    我的想法是,如果我使用 /{foo}/{bar} 作为匹配器,它是一个简单的 GET 请求。 这些参数将被填充到控制器中,无需任何进一步的配置。 如果我现在使用 POST 请求,则参数也应该填充到操作中。

    重点是,{foo} 和 {bar} 是 URI 的一部分,而不是任何 GET 参数,例如 ?val=xy。 GET/POST 参数与操作的输入参数无关。 它们是通过请求对象访问的,当然不会作为方法参数传递给操作。

    【讨论】:

      【解决方案3】:

      对于这个功能:public function createAction($title, $author, $content)

      路由必须是这样的:

      post:
          pattern:        /post/{title}/{$author}/{content}
          defaults:       { _controller: FooModelBundle:Post:create }
          requirements:
                  _method:        POST
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-04
        • 2014-02-27
        • 1970-01-01
        • 2015-10-01
        • 1970-01-01
        • 2020-04-14
        相关资源
        最近更新 更多