1

symfony の例外と取得しようとしているパラメーターに問題があります。コードとインターネットを何千回もチェックした後、なぜこの例外が発生するのか、まったくわかりません。

例外は次のとおりです。

@Blog\Default\Blog\singlePost.html.twig の行で、テンプレートのレンダリング中に例外がスローされました (「ルート "blogcomment_create" の URL を生成するための必須パラメーター ("slug") が不足しています。」) 29.

ルート構成:

blogcomment_create:
    path:   /{slug}/comment/create/
    defaults: { _controller: "BlogBundle:Comment:create" }
    requirements: { methods: post }

コントローラーをインポートするための小枝テンプレートのコード:

<footer>
    {{ render(controller('BlogBundle:Comment:create', {
        'slug': Post.slugname
    })) }}
</footer>

私の行動宣言:

 public function createAction(Request $request, $slug = null)
{
    //...
}

私はこの例外に腹を立て始めています。なぜ彼女を手に入れるのか手がかりがなく、本当に良い目が必要です。

私はたくさんの例を試します:

Symfony 2.2で「レンダリング」を使用してTwigにコントローラーを挿入するには?

symfony2 - 小枝 - 小枝テンプレート内から小枝テンプレートをレンダリングする方法

コントローラーアクションをレンダリングするときにパラメーターを介してテンプレートを変更しますか?

...

ここに関数のダンプがあります:

object(Symfony\Component\HttpKernel\Controller\ControllerReference)[992]
    public 'controller' => 
        string 'BlogBundle:Comment:create' (length=31)
    public 'attributes' => 
        array (size=1)
            'slug' => string 'article-de-test-yolowowo' (length=24)
    public 'query' => 
        array (size=0)
            empty
4

1 に答える 1

0

わかりました、やっとわかりました!

問題は私のtwigテンプレートではなく、コントローラーにありました。このコントローラーでフォームを生成する機能があります。私は自分の行動で彼女を呼びます:

private function createCreateForm(Comment $entity, $slug)
{
    $form = $this->createForm(new CommentType(), $entity, array(
        'action' => $this->generateUrl('blogcomment_create', array('slug' => $slug)),
        'method' => 'POST',
    ));

    $form->add('submit', 'submit', array('label' => 'Create'));

    return $form;
}

この関数では、この機能でパラメーターを渡すのを忘れていました:

$this->generateUrl()

こういう問題が起きたら、本当に早く寝なきゃね >.>

私の問題が将来他の人々に役立つことを願っています。

于 2016-09-24T14:10:27.787 に答える