0

クラス MyTwigExtension extends \Twig_Extension を持っており、小枝用のフィルタを作成しました。新しいフィルターの実装でサービスを使用したい。このようなもの:

$canView = $this->get('security_service')
                ->hasClassPermission(
                        'MyBundle:MyEntity',
                        $this->get('security.context')->getToken()->getUser(), 
                        array(MaskBuilder::MASK_VIEW)
                 );

コントローラーではこれは正常に機能しますが、コントローラーの外では...

4

1 に答える 1

0

コントローラーの外部での依存性注入に関するこの回答を確認してください

次に、このリンクTwigExtensionをチェックして、サービスとして登録する方法を確認してください。

ちょっとした編集ですがTwigExtension、サービスとして実行する場合、サービスを直接注入できないことがありScopeWideningExceptionます。この例外が発生した場合は、scope = requestサービス定義に追加できます。それでも例外がスローされる場合は、依存関係コンテナー全体を注入し、$this->container->get('service.id.here')必要なサービスを取得します。

それが役に立てば幸い。

よろしく、
マット

于 2012-04-23T16:38:56.087 に答える