Php 细枝-应用默认过滤器加载模板
我希望在默认情况下对所有变量应用过滤器,以避免出现以下情况:Php 细枝-应用默认过滤器加载模板,php,twig,Php,Twig,我希望在默认情况下对所有变量应用过滤器,以避免出现以下情况: {% set var = "%gg% man" %} {% block body %} <h1>You are a {{ var|replace({'%gg%':good, '%bb%':bad}) }}</h1> {% block body %} {%set var=“%gg%man”%} {%block body%} 你是一个{var | replace({'%gg%':good,'%bb%':bad}}
{% set var = "%gg% man" %}
{% block body %}
<h1>You are a {{ var|replace({'%gg%':good, '%bb%':bad}) }}</h1>
{% block body %}
{%set var=“%gg%man”%}
{%block body%}
你是一个{var | replace({'%gg%':good,'%bb%':bad}}}
{%block body%}
关于输出:
你是个好人
有解决方案吗?您可以创建一个过滤细枝
// src/AppBundle/Twig/AppExtension.php
namespace AppBundle\Twig;
class AppExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('customReplace', array($this, 'customReplaceFilter')),
);
}
public function customReplaceFilter(yourArguments)
{
//do your replace here in PHP
return [your string after replace];
}
public function getName()
{
return 'app_extension';
}
}
在你的小树枝上
{{ var|customReplace(yourArguments) }}
不要在你的app/config/services.yml中忘记这一点:
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
public: false
tags:
- { name: twig.extension }
您好,谢谢您的回答,但是,我使用的是没有Symfony的Twig。因此,我没有
src/AppBundle/Twig/
路径。我还有一个问题,当replace参数有一个HTML标记时,输出被转义!1-在没有symfony框架的情况下,如何创建过滤器扩展?2-如何在不禁用转义过滤器的情况下在浏览器上正确显示标记?我的答案是针对symfony 2。来源:欢迎使用堆栈溢出。请解释你的意思以避免这种情况:你指的是第一行吗?第三个?