以下のコードでわかるように、サブナビゲーションを作成しようとしています。これを学習課題として使用しているため、バンドルを使用するのではなく、ゼロから作成したいと考えています。私はちょうどそれを割ったと思うところまで来ました。今必要なのは、subNavAction() 内の navAction() db クエリの結果にアクセスすることだけです。
「echo self::navAction($sector);」まで到達できました。完全なナビゲーションを再度エコーアウトしますが、クエリ内の個々のアイテムにアクセスできないようです。実際に行う必要があるのは、navAction() の結果をループして、子を持つすべての項目の結果を取得することです。
私はOOPHP(手続き型はよく知っていますが)とSymfony/Doctrineに本当に慣れていないので、より包括的で回答があればあるほど良いです。
//Render Navigation
public function navAction($sector)
{
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
"SELECT DISTINCT p.pageName, p.pageParent
FROM styleGuideBundle:pages p
WHERE p.pageSector LIKE :sector
AND p.pageType = 2"
);
$query->setParameter(':sector', '%'.$sector.'%');
$navItems = $query->getResult();
if (!$navItems) throw $this->createNotFoundException('Unable to find any pages under this category');
return $this->render(
'styleGuideBundle:Partial:peNav.html.twig',
array(
'navItems' => $navItems,
'sector' => $sector
)
);
}
//Render SubNavigation
public function subnavAction($sector)
{
echo self::navAction($sector); // This line is where I got stuck.
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
"SELECT DISTINCT p.pageName, p.pageParent
FROM styleGuideBundle:pages p
WHERE p.pageSector LIKE :sector
AND p.pageType = 2"
);
$query->setParameter(':sector', '%'.$sector.'%');
$navItems = $query->getResult();
if (!$navItems) throw $this->createNotFoundException('Unable to find any pages under this category');
return $this->render(
'styleGuideBundle:Partial:peNav.html.twig',
array(
'navItems' => $navItems,
'sector' => $sector
)
);
}