我尝试使用KnpMenu教程创建一个菜单,并在Symfony中与引导程序一起使用。它在本地模式下工作得很好,但是当我在我的服务器上(都是在dev模式下)尝试它时,它不能工作,我有以下错误:
在呈现模板时抛出了一个异常( "robStorm\WelcomeBundle\ menu \ builder“不存在于菜单生成器”robStormWelcomeBundle:Builder“)。在"robStormWelcomeBundle:Homepage:index.html.twig".中500个内部服务器错误- Twig_Error_Runtime 1链接异常: InvalidArgumentException
但是,我在本地或服务器上有完全相同的文件.
以下是我文件的内容:
在app/config/config.yml中:
# Twig Configuration
twig:
debug: %kernel.debug%
strict_variables: %kernel.debug%
twig:
form:
resources:
- "BraincraftedBootstrapBundle:Form:form_div_layout.html.twig"
knp_menu:
twig:
template: "BraincraftedBootstrapBundle:Menu:menu.html.twig"在src/robStorm/WelcomeBundle/Controller/HomepageController中:
public function indexAction()
{
return $this->render('robStormWelcomeBundle:Homepage:index.html.twig');
}在src/robStorm/WelcomeBundle/Menu/builder.php中:
<?php
namespace robStorm\WelcomeBundle\Menu;
use Knp\Menu\FactoryInterface;
use Symfony\Component\DependencyInjection\ContainerAware;
use Knp\Menu\Matcher\Matcher;
use Knp\Menu\Matcher\Voter\UriVoter;
use Knp\Menu\MenuFactory;
use Knp\Menu\Renderer\ListRenderer;
class Builder extends ContainerAware
{
public function mainMenu(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$item = $menu->addChild('Accueil', array('route' => 'robStormWelcomeBundle_homepage'));
$menu->addChild('Combat', array('route' => 'robStormWelcomeBundle_homepage_combat'));
$menu->addChild('Boutique', array('uri' => '#'));
return $menu;
}
public function menuDroite(FactoryInterface $factory, array $options)
{
$menu = $factory->createItem('root');
$menu->addChild('Aide', array('uri' => '#'));
$menu->addChild('d1', array('attributes' => array('divider' => true)));
$dropdown = $menu->addChild('Mon compte');
$dropdown->addChild('Mon profil', array('uri' => '#'));
$dropdown->addChild('Mes messages', array('uri' => '#'));
$dropdown->addChild('d1', array('attributes' => array('divider' => true)));
$dropdown->addChild('Se déconnecter', array('uri' => '#'));
return $menu;
}
}在src/robStorm/WelcomeBundle/Ressources/config/routing.yml中:
robStormWelcomeBundle_homepage:
pattern: /
defaults: { _controller: "robStormWelcomeBundle:Homepage:index" }在src/robStorm/WelcomeBundle/Ressources/views/layout.html.twig中:
<div class="container">
{{ knp_menu_render('robStormWelcomeBundle:Builder:mainMenu', {'nav_type': 'navbar', 'currentAsLink': true}) }}
{{ knp_menu_render('robStormWelcomeBundle:Builder:menuDroite', {'nav_type': 'navbar', 'currentAsLink': true, 'pull': 'right'}) }}
</div>发布于 2013-03-17 12:14:13
问题与文件/类的情况有关。
如果使用robStormWelcomeBundle:Builder:mainMenu,服务器将查找一个src/robStorm/WelcomeBundle/Menu/Builder.php文件(请注意文件名)。但是该文件不存在,您将其命名为builder.php (小写)。
您现在所做的解决方案(将...:Builder:mainMenu改为...:builder:mainMenu)并不那么好。这意味着PHP将寻找一个builder类,而不是实际的Builder类。因为PHP是一种非常懒惰的语言,它将接受Builder类而不是builder,但是这样做并不好。
实际解决方案(如果非常简单):将builder.php重命名为Builder.php。
之所以没有在本地环境中发生这种情况,但在服务器上却没有发生,是因为计算机也很懒(服务器不是这样)。
https://stackoverflow.com/questions/15459541
复制相似问题