12

小枝拡張機能の実装に問題があります。独自のフィルター (substr フィルター) を作成する必要があります。そこで、小枝拡張機能を使用することを考えました。

MyApp\Bundle\WebsiteBundle\ に「Extension」という名前のフォルダーとファイルを作成しました: WebsiteExtension.php

namespace Bundle\WebsiteBundle\Extension;

class WebsiteExtension extends \Twig_Extension {

    public function getFilters() {
        return array(
            'substr'  => new \Twig_Filter_Method($this, 'substrFilter'),
        );
    }

    public function substrFilter($sentence, $start, $end) {
        return substr($sentence, $start, $end);
    }

    public function getName()
    {
        return 'website_extension';
    }
}

次に、 /app/config の config.yml で

services:
    Website.twig.extension:
        class: MyApp\Bundle\WebsiteBundle\Extension\WebsiteExtension
        tags:
            - { name: twig.extension }

しかし、エラーが発生します:

"Fatal error: Class 'MyApp\Bundle\WebsiteBundle\Extension\WebsiteExtension' not found in .../appDevDebugProjectContainer.php on line 1391"

ファイルとクラスが存在するのはおかしいです...何か見逃していますが、何ですか?

4

1 に答える 1

6

これを交換

namespace Bundle\WebsiteBundle\Extension;

これで

namespace MyApp\Bundle\WebsiteBundle\Extension;

そして、あなたの必要なディレクトリは何Bundle/WebsiteBundleですか?足りないですか
Bundle

あなたは私がこれを実装する方法をここで見ることができます https://github.com/azat/blog/blob/master/src/Blog/WebBundle/Twig/Extension/WebExtension.php

于 2011-05-13T13:21:51.453 に答える