Php 如何在Symfony 4中的主页上包含导航栏?

Php 如何在Symfony 4中的主页上包含导航栏?,php,symfony,controller,twig,Php,Symfony,Controller,Twig,我从mySQL数据库的数据创建了一个导航菜单: navbar.html.twig {% block body %} {% for page in pages %} {{page.name}} {% endfor %} {% endblock %}</span> 当我打开mypage.com时,我得到一个错误: 变量页不存在 将变量“Pages”传递给主页的方式与将变量“Pages”传递给页面的方式相同。将数组“pages”

我从mySQL数据库的数据创建了一个导航菜单:

navbar.html.twig

      {% block body %}
      {% for page in pages %}
      {{page.name}}
      {% endfor %}
      {% endblock %}</span>
当我打开mypage.com时,我得到一个错误:

变量页不存在


将变量“Pages”传递给主页的方式与将变量“Pages”传递给页面的方式相同。将数组“pages”=>$pages添加到主页功能中


或者,您也可以使用@DarkBee的答案,将{%for page in pages | default[]%}放在navbar.html.twig中。积分归@DarkBee

您在主页上包括导航栏,而不给变量$pages。@MrJ。但是我该怎么做?你是什么意思?要么传递页面,要么使用过滤器默认值,例如,{%for{%for pages in pages | default[]%@DarkBee现在我很困惑,请划掉第一个{%for-它应该是{%for pages in pages | default[]%}因此,我真的必须为所有页面的每个控制器添加此变量。我想使用导航菜单?这对我来说似乎不是很方便。有几种方法可以做到这一点。您可以将其添加为全局变量,也可以编写一个自定义函数来返回页面
<?php

namespace App\Controller;

use App\Entity\Pages;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class PagesController extends Controller
{
    /**
     * @Route("/pages", name="pages")
     */
    public function index()
    {
        $pages = $this->getDoctrine()->getRepository(Pages::class)->findAll();
        return $this->render('inc/navbar.html.twig', array('pages' => $pages));
    }
}
{% block title %}Symfony{% endblock %}
{% block body %}
{{ include('inc/navbar.html.twig') }}
{% endblock %}