Я пытаюсь реализовать контроллер, который управляет рекурсией по массиву. Вот код:Ошибка Symfony при реализации рекурсивной функции
/**
* @Route("/printTree", name="printTree")
*/
public function printTree(array $elements, $parentId = 0) {
$em = $this->getDoctrine()->getManager();
$elements = $em->getRepository('AppBundle:Tree')->findAll();
$treeArray = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = printTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$treeArray[] = $element;
}
}
return $treeArray;
}
Это ошибка, я получаю:
Controller "AppBundle\Controller\DefaultController::printTree()" requires that you provide a value for the "$elements" argument (because there is no default value or because there is a non optional argument after this one).
Я искал через веб-сайт для других подобных вопросов, и проблема, как представляется, в аннотации Doctrine, где заполнителей необходимы. Если я пишу, например:
/**
* @Route("/printTree/{$elements}/{0}", name="printTree")
*/
как я могу заставить его работать в этом примере?
вы можете попробовать '$ this-> printTree' вместо' printTree' – Matteo
@Matteo Ничего не меняется – Dygne