【发布时间】:2017-04-06 05:02:48
【问题描述】:
我正在尝试实现一个对数组进行递归操作的控制器。 代码如下:
/**
* @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 没有任何变化