尝试加载我正在处理的树枝过滤器时出现错误

问题描述 投票:0回答:1

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

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

我所做的是:

  • 在我的包目录下创建一个文件夹并将其命名为 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') }}">
    

我还漏掉了什么吗?

php symfony twig
1个回答
2
投票

你没有告诉 twig 你的新过滤器。您还需要修改类的

getFilters()
方法。

© www.soinside.com 2019 - 2024. All rights reserved.