3

フォームを送信した後、次のエラー メッセージが表示されます。

コントローラ "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

これは create アクションの定義です:

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

4

3 に答える 3

1

フレームワークのフォーム生成および検証機能を使用しない理由は次のとおりです。

私が達成したかったのは、いくつかの動的データを使用したアクションの簡単なテストです。この時点で、データ バインディングとフォーム作成のために x 行のコードを書きたくありません。次のステップです。

私が間違っていたのは、ルーティングのパラメーターの概念でした。

/{foo}/{bar} をマッチャーとして使用すると、単純な GET リクエストになると思いました。パラメーターは、それ以上構成しなくてもコントローラーに取り込まれます。ここで POST リクエストを使用すると、パラメーターもアクションに入力されるはずです。

ポイントは、{foo} と {bar} は URI の一部であり、?val=xy のような GET パラメータではないということです。GET/POST パラメーターは、アクションの入力パラメーターとは関係ありません。これらは request オブジェクトを介してアクセスされ、もちろんメソッド パラメータとしてアクションに渡されません。

于 2011-04-11T16:37:59.160 に答える
1

この関数の場合:public function createAction($title, $author, $content)

ルーティングは次のようにする必要があります:

post:
    pattern:        /post/{title}/{$author}/{content}
    defaults:       { _controller: FooModelBundle:Post:create }
    requirements:
            _method:        POST
于 2012-05-18T01:08:44.990 に答える
1

http://forum.symfony-project.org/viewtopic.php?f=23&t=34427&p=115961#p115961で最初に質問を投稿した場所で、これに答えようとしました

アイデアは、フレームワークのフォーム生成機能を使用し、リクエスト オブジェクトを介してデータを取得することです。

とても参考になると思います。

于 2011-04-11T15:53:57.577 に答える