1

コンテナー サービスを作成したいので、コンストラクターで classe を使用します。

service.xml :

<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

<parameters>
    <parameter key="myapp_mybundle.locationmanager.class">My_app\MyBundle\Manager\LocationManager</parameter>
    <parameter key="myapp_mybundle.rootLocation">rootLocation</parameter>
</parameters>

<services>
    <service id="myapp_mybundle.locationmanager" class="%myapp_mybundle.locationmanager.class%">
    <argument>%myapp_mybundle.rootLocation%</argument>

    </service>
</services>

MyappMyBundleExtension.php

$container->set('myapp_mybundle.locationmanager', $manager);

クラス locationManager :

class LocationManager
{
     /**
     * @var Location
     */
protected $rootLocation;

public function __construct(Location $rootLocation)
{
    $this->rootLocation = $rootLocation;
}
   .....

およびコントローラーのいくつかのアクション:

   $locationManager =  $this->container->get("myapp_mybundle.locationmanager");

このエラーが発生します:

  You have requested a non-existent service "myapp_mybundle.locationmanager". 
4

2 に答える 2

0

実際に services.xml ファイルをロードしますか?

そのような:

use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\Config\FileLocator;

public function load(array $configs, ContainerBuilder $container)
{
    $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    $loader->load('services.xml');
}

そうしないと、サービスがコンテナーに挿入されず、サービスをロードできなくなります。

詳細については、こちらこちらをご覧ください。

于 2012-10-04T13:39:20.487 に答える
0

あなたのサービスには大文字の「b」がありません...

$locationManager = $this->container->get("myapp_mybundle.locationmanager");

于 2012-10-04T12:41:42.787 に答える