阅读完文档后,我尝试了第一个过滤器,但收到此错误
过滤器“sanitize_for_image_url”不存在于 /var/www/html/src/CategoryBundle/Resources/views/Default/menu.html.twig 在第 5 行。
我所做的是:
在该文件夹下创建文件 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') }}">
我还漏掉了什么吗?
你没有告诉 twig 你的新过滤器。您还需要修改类的
getFilters()
方法。