0

阅读文档后,我尝试了第一个过滤器,但出现此错误

第 5 行的 /var/www/html/src/CategoryBundle/Resources/views/Default/menu.html.twig 中不存在过滤器“sanitize_for_image_url”。

我所做的是:

  • 在我的 bundle 目录下创建一个文件夹并将其命名为 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”的文件夹,并在 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

你没有告诉 twig 你的新过滤器。您还需要修改getFilters()类的方法。

于 2013-09-15T12:05:19.820 回答