0

ドキュメントを読んだ後、最初のフィルターを試しましたが、このエラーが発生しました

/var/www/html/src/CategoryBundle/Resources/views/Default/menu.html.twig の 5 行目にフィルター "sanitize_for_image_url" が存在しません。

私がしたことは:

  • バンドル ディレクトリの下にフォルダーを作成し、Twig という名前を付けます。
  • そのフォルダーの下にファイル CategoryExtension.php を作成し、次のコードを追加します。

    <?php
    
    namespace CategoryBundle\Twig;
    
    class CategoryExtension extends \Twig_Extension {
    
    public function getFilters() {
        return array(
            new \Twig_SimpleFilter('price', array($this, 'priceFilter')),
        );
    }
    
    public function sanitize_for_image_urlFilter($image) {
        $image = strtolower($image);
        $image = preg_replace('/[^a-z0-9 -]+/', '', $image);
        $image = str_replace(' ', '-', $image);
    
        return $image;
    }
    
    public function getName() {
        return 'category_extension';
    }
    

    }

  • 内部\CategoryBundle\Resourcesに「config」という名前のフォルダーを作成し、構成の下に次の内容のファイル「services.yml」を作成します。

    services:
        category.twig.category_extension:
            class: CategoryBundle\Twig\CategoryExtension
            tags:
                - { name: twig.extension }
    
  • 次のように、小枝テンプレートでフィルターを呼び出します。

    <img src="{{ asset('bundles/dashboard/img/categories/' ~ entity.getName|lower|sanitize_for_image_url ~ '.gif') }}">
    

私は何か他のものを逃しましたか?

4

1 に答える 1

2

新しいフィルターについて小枝に伝えていません。getFilters()クラスのメソッドも変更する必要があります。

于 2013-09-15T12:05:19.820 に答える