使用KnpMenu中的RegexVoter设置当前只有一个项目

时间:2015-11-20 10:44:35

标签: php symfony knpmenubundle knpmenu

我像knpMenu一样使用regexVoter

//This is on my createMenuAction
$this->matchingRoute($menu);

/**
 * @param $menu
 *
 * @return bool
 */
private function matchingRoute($menu)
{
    foreach ($menu->getChildren() as $child) {
        $childRegex = $child->getAttribute('regex');

        $voter = new RegexVoter($childRegex);
        $voterTest = $voter->matchItem($child);

        if ($voterTest == true && $this->request->getUri()) {
            $child->setCurrent(true);
        } else {
            $child->setCurrent(false);
        }
    }
}

这是有效的,但是为具有正则表达式属性的所有孩子设置了当前类。这位选民将孩子的正则表达式与他们的路线进行比较,因此它始终成为现实。

我尝试添加return true;

if ($voterTest == true && $this->request->getUri()) {
    $child->setCurrent(true);
    return true;
} else {
    $child->setCurrent(false);
}

但是这会在第一个使用regexVoter返回true的孩子上设置当前课程。

我应该用这个选民检查这个正则表达式与当前路线吗?

我如何使用这个选民为好孩子设置当前课程?

谢谢,

0 个答案:

没有答案