You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9中Twig添加base64编解码过滤器报‘Unknown base64_encode filter’错误原因

解决Twig中"Unknown 'base64_encode' filter"错误

Twig核心并未内置base64_encode和base64_decode过滤器,直接使用会触发你遇到的错误。以下是不同环境下的解决方案:

原生Twig环境

初始化Twig实例时,直接添加自定义过滤器:

$twig = new Twig\Environment($loader);

// 添加base64_encode过滤器
$twig->addFilter(new Twig\TwigFilter('base64_encode', function ($value) {
    return base64_encode($value);
}));

// 可选:添加base64_decode过滤器
$twig->addFilter(new Twig\TwigFilter('base64_decode', function ($value) {
    return base64_decode($value);
}));

Symfony框架

创建自定义Twig扩展类,框架会自动注册:

// src/Twig/Base64Extension.php
namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class Base64Extension extends AbstractExtension
{
    public function getFilters(): array
    {
        return [
            new TwigFilter('base64_encode', [$this, 'encode']),
            new TwigFilter('base64_decode', [$this, 'decode']),
        ];
    }

    public function encode(string $value): string
    {
        return base64_encode($value);
    }

    public function decode(string $value): string
    {
        return base64_decode($value);
    }
}

Drupal环境(适配你的代码场景)

通过自定义模块添加Twig扩展:

  1. 创建扩展类:
// modules/custom/my_module/src/Twig/Extension/Base64Extension.php
namespace Drupal\my_module\Twig\Extension;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class Base64Extension extends AbstractExtension {

    public function getFilters() {
        return [
            new TwigFilter('base64_encode', [$this, 'base64Encode']),
            new TwigFilter('base64_decode', [$this, 'base64Decode']),
        ];
    }

    public function base64Encode($string) {
        return base64_encode($string);
    }

    public function base64Decode($string) {
        return base64_decode($string);
    }

    public function getName() {
        return 'my_module.base64_extension';
    }
}
  1. 在模块的services.yml中注册服务:
# modules/custom/my_module/my_module.services.yml
services:
  my_module.base64_extension:
    class: Drupal\my_module\Twig\Extension\Base64Extension
    tags:
      - { name: twig.extension }

添加完成后,你原来的代码即可正常运行:
示例1:

{% set youtube_id = content.field_youtube_embed_code|render|striptags|trim %}
{{ youtube_id|base64_encode }}

示例2:

<p>{{ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi dapibus.'|base64_encode }}</p>

内容的提问来源于stack exchange,提问作者Souvik Das

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 15:38:24