【问题标题】:Get error while trying to load a twig filter I'm working on尝试加载我正在处理的树枝过滤器时出错
【发布时间】:2013-09-14 17:43:25
【问题描述】:

阅读docs后,我尝试了我的第一个过滤器,但得到了这个错误

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

我所做的是:

  • 在我的 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') }}">
    

我是不是错过了什么?

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2012-04-25
      • 1970-01-01
      • 2016-08-16
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多