0

Resources / config/services.ymlでサービスを定義しました。

services:
    gSm.gate.terminal:
        class: Stream\TerminalBundle\StreamTerminal
        arguments: [ [], [%terminal_login%, %terminal_password%] ]

そして、コントローラーアクションの内部にアクセスしようとします。

public function displayAction() {
    $terminal = $this->get('gSm.gate.terminal');
    return $this->render('StreamTerminalBundle::display.html.twig');
}

サーバーは次の例外を返します:500 You have requested a non-existent service "gsm.gate.terminal"。バンドルはappKernelに登録されており、バンドルは.yml構成ファイルを使用しています...そしてこのサービスを利用可能にするために他に何を見ることができるかわかりません...助けてくれてありがとう。

編集:

私の拡張クラスコードは次のとおりです。

namespace Stream\TerminalBundle\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 StreamTerminalExtension 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');
    }
}
4

3 に答える 3

1

バンドルservices.yml. 最も簡単な方法は、からインポートすることですconfig.yml。より優れたより高度な解決策は、 extension を作成することです。

拡張クラスの例を見るには、バンドルの oneを参照してください。YAML を使用する場合は、 と に変更するだけservices.xmlです。services.ymlXmlFileLoaderYamlFileLoader

于 2013-03-05T11:44:04.617 に答える
1

services.yml ファイルは Extension クラスによって解析されていますか?
新しいバンドルでは、デフォルトで xml ファイルをロードするように設定されています。貼り付けてもらえますか

Acme\Bundle\YourBundle\DependencyInjection\AcmeYourExtension

クラス?

于 2013-03-05T11:44:07.137 に答える