1

モデル クラス (DBAL を使用する) を作成しようとしていますが、それをバンドル内のサービスのように使用したいと考えています。

バンドルにこの構成でサービスを作成しようとしました:

services:
   X:
     class:        X
     arguments:   [@database_connection]

しかし、実際には、app/config/config.yml でこのサービスを構成したくありません。これは、1 つのバンドルでのみ使用されるためです。

特定のバンドル サービスを作成し、 @database_connection パラメータをクラスに与える方法はありますか? または、すべてのアプリに対して構成する必要がありますか?

ここでの私の目標は、Doctrine ORM/Entity を使用せずに、DBAL のみを使用して、コントローラーとモデルに個別のクラスを持たせることだけです。

4

1 に答える 1

1

はい、すべてのバンドルには独自の構成ファイルがあります。

# src/Acme/YourBundle/Resources/config/services.yml

services:
    X:
       class:        X
       arguments:   [@database_connection]

バンドル構成は、DIC を介してロードされます。したがって、バンドル内のこのファイルは重要です

// src/Acme/YourBundle/DependencyInjection/AcmeYourBundleExtension.php

namespace Acme\YourBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
 * This is the class that loads and manages your bundle configuration
 *
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
 */
class AcmeYourExtension 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');
    }
}

一般に、すべてのサービスを ではservices.ymlなくバンドル固有に設定する必要がありますconfig.yml。したがって、それらを再利用できます。ただし、サービスはバンドルだけでなく、アプリケーション全体で表示されます。しかし、これは問題ないはずです。

于 2013-05-31T11:01:15.337 に答える