【问题标题】:Symfony 2.5 "You have requested a non-existent service "siteTest.b"Symfony 2.5“您请求了一个不存在的服务“siteTest.b”
【发布时间】:2014-11-13 04:43:57
【问题描述】:

运行workspace/app_dev.php时,没问题。但是当我尝试运行 workspace/app.php 我得到:

“您请求了一个不存在的服务“siteTest.b”

我不知道我做错了什么。

app/config/config.yml:

imports:
    - { resource: parameters.yml }
    - { resource: security.yml }
framework:
    secret:          "%secret%"
    router:
        resource: "%kernel.root_dir%/config/routing.yml"
        strict_requirements: ~
    form:            ~
    csrf_protection: ~
    validation:      { enable_annotations: true }
    templating:
        engines: ['twig']
    default_locale:  "%locale%"
    trusted_hosts:   ~
    trusted_proxies: ~
    session:
        handler_id:  ~
    fragments:       ~
    http_method_override: true

src/Site/TestBundle/Resources/config/services.yml:

parameters:
    siteTest.aa: Site\TestBundle\Controller\a

services:
    siteTest.b:
        class: %siteTest.aa%

src/Site/TestBundle/DependencyInjection/SiteTestExtension.php:

namespace Site\TestBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;
class SiteTestExtension extends Extension
{
    /**
     * {@inheritDoc}
     */
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }
}

src/Site/TestBundle/Controller/a.php:

namespace Site\TestBundle\Controller;
class a {
    public function printTest() {
        var_dump('Test');
        exit;
    }
}

src/Site/TestBundle/Controller/DefaultController.php:

namespace Site\TestBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class DefaultController extends Controller
{
    public function indexAction()
    {
        $aaa = $this->get('siteTest.b');
        exit();
    }
}

【问题讨论】:

  • 清除你的prod缓存

标签: php symfony frameworks


【解决方案1】:

你可能还需要在里面添加下面的代码

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: '@TestBundle/Resources/config/services.yml' }

您也可以使用说明书配置http://symfony.com/doc/current/cookbook/bundles/extension.html#cookbook-bundles-extension-config-class

【讨论】:

  • 谢谢,我不知道如何只导入一个配置文件。
【解决方案2】:

运行命令php app/console cache:clear --env=prod 清除您的prod 缓存

【讨论】:

    猜你喜欢
    • 2016-05-04
    • 2013-02-03
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    相关资源
    最近更新 更多