-1

在学说扩展树中使用 generateUrl

在行动

$repo = $em->getRepository('Entity\Category');
    $options = array(
        'decorate' => true,
        'rootOpen' => '<ul>',
        'rootClose' => '</ul>',
        'childOpen' => '<li>',
        'childClose' => '</li>',
        'nodeDecorator' => function($node) {
            return '<a href="'.$this->generateUrl('_control_category_edit', array('id' => $node[$id])).'">'.$node[$field].'</a>';
        }
    );
    $htmlTree = $repo->childrenHierarchy(
        null, /* starting from root nodes */
        false, /* true: load all children, false: only direct */
        $options
    );

错误:

FatalErrorException:错误:不在对象上下文中使用 $this

4

2 回答 2

0

您必须将其注册为服务并注入@router

于 2013-09-13T15:20:57.213 回答
0

nodeDecorator 是一个闭包,因此你不能在里面使用它。尝试这个:

//depending in which context you are
$routing = $this->container->get('router');

[...]
    'nodeDecorator' => function($node) use ($router) {
        return '<a href="'.$router->generate('_control_category_edit', array('id' => $node[$id])).'">'.$node[$field].'</a>';
    }
于 2013-09-13T21:03:04.787 回答