1

私はこの機能を次のように持っていますCategoryBundle:CategoryTreeBuilderController:

/**
 * Get subcategories based on $parent_id parameter
 *
 * @Route("/category/tree/{parent_id}", name="category_tree", options={"expose"=true})
 * @Method("GET")
 */
public function BuildCategoryTree($parent_id = null) {
    $em = $this->getDoctrine()->getManager();
    $entity = $em->getRepository('CategoryBundle:Category')->findBy(array("parent" => $parent_id));

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find Category entity.');
    }

    return $this->render("CategoryBundle:Default:index.html.twig", array('entities' => $entity));
}

この関数を Twig テンプレートから再帰的に呼び出す必要があるため、親が子を持つたびに一種のインデントが発生します。Tree ビヘイビアーを実装しようとしています。この投稿を確認しましたが、まったく役に立ちません。正しい道を案内してくれる人はいますか?

4

1 に答える 1

1

テンプレートでマクロを作成し、すべての子を再帰的に反復する方がよいと思います。

とにかく、埋め込みたい場合は、この記事をチェックしてください。テンプレートでコントローラーを簡単に呼び出すことができます

{% for entity in entities %}
    {{ render(controller('AcmeArticleBundle:Article:BuildCategoryTree', {
        'parent_id': entity.id
    })) }}
{% endfor %}
于 2013-08-12T17:31:51.860 に答える