symfony我正在运行的捆绑包

时间:2014-07-14 20:40:02

标签: php symfony routing bundle

我正在尝试在Symfony中创建我的第一个包。本教程将引导您完成创建名为“Acme”的捆绑包的过程。自从我下载了与Acme Demo捆绑一起使用的symfony 2.4。我将所有“AcmeBundle”改为“myAcmeBundle”。我创建了控制器,路由和包,就像除了包的名称之外的指令一样。

啧啧说如果我去

http://localhost/app_dev.php/hello/Ryan

它应该调用我的HelloController.php 我的问题是symfony如何知道我想要运行哪个包。我现在在“src”文件夹中有2个包。每当我输入 localhost / app_dev.php / hello / Ryan 时,它会在 AcmeBundle (默认的演示包)中显示HelloController.php的内容。我想在 myAcmeBundle (我新创建的包)中显示HelloController.php的内容。

其他信息:      也许是与AppKernel类有关的东西,但不是很确定

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Symfony\Bundle\AsseticBundle\AsseticBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new myAcme\HelloBundle\myAcmeHelloBundle(),
        );

        if (in_array($this->getEnvironment(), array('dev', 'test'))) {
            $bundles[] = new Acme\DemoBundle\AcmeDemoBundle();
            //$bundles[] = new myAcme\HelloBundle\myAcmeHelloBundle();
            $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
            $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
            $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
        }

        return $bundles;
    }

    public function registerContainerConfiguration(LoaderInterface $loader)
    {
        $loader->load(__DIR__.'/config/config_'.$this->getEnvironment().'.yml');
    }
}

应用\设置\ routing.yml中

my_acme_hello:
    resource: "@myAcmeHelloBundle/Resources/config/routing.yml"
    prefix:   /

SRC \ myAcme \ HelloBundle \资源\配置\ routing.yml中

my_acme_hello_homepage:
    path:     /hello/{name}
    defaults: { _controller: myAcmeHelloBundle:Default:index }

2 个答案:

答案 0 :(得分:1)

Symfony2路由以与解析相同的顺序提供(匹配):当您使用prefix: /而未指定任何其他内容(特别是测试问候符号)时,您尝试覆盖基础{{1}我认为没有enaugh信息的路线会在你的新捆绑路线之前被解析。

解决方案:尝试取消注册AcmeBundle,看看会发生什么。 如果现在框架服务于你的newbundle ruote并且你想让AcmeBundle保持活着,那么你应该在AcmeDemo之前编写你的包的路由

更新

要取消注册AcmeDemoBundle,请按以下步骤修改AcmeBundle

AppKernel

答案 1 :(得分:0)

调用“Hello”控制器而不是“默认”控制器

my_acme_hello_homepage:
    path:     /hello/{name}
    defaults: { _controller: myAcmeHelloBundle:Hello:index }