我正在尝试在 twig 模板中更轻松、更清晰地显示 Bootstrap 工具提示。我想实现这样的目标:<i class="icon" {{'this is great tooltip'|tooltip}}></i>
我创建了树枝过滤器:
class TooltipExtension extends \Twig_Extension{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('tooltip', array($this, 'tooltipFilter',['is_safe'=>['html']])),
new \Twig_SimpleFilter('tooltip_top', array($this, 'tooltipTopFilter')),
new \Twig_SimpleFilter('tooltip_bottom', array($this, 'tooltipBottomFilter')),
new \Twig_SimpleFilter('tooltip_left', array($this, 'tooltipLeftFilter')),
new \Twig_SimpleFilter('tooltip_right', array($this, 'tooltipRightFilter')),
);
}
public function tooltipFilter($title, $direction = "top")
{
switch($direction){
case "top":
return $this->tooltipTopFilter($title);
case "bottom":
return $this->tooltipBottomFilter($title);
case "left":
return $this->tooltipLeftFilter($title);
case "right":
return $this->tooltipRightFilter($title);
}
}
public function tooltipTopFilter($title)
{
return ' data-toggle=tooltip data-placement=top title="'.$title.'" ';
}
public function tooltipBottomFilter($title)
{
return ' data-toggle=tooltip data-placement=bottom title='.$title.' ';
}
public function tooltipLeftFilter($title)
{
return ' data-toggle=tooltip data-placement=left title='.$title.' ';
}
public function tooltipRightFilter($title)
{
return ' data-toggle=tooltip data-placement=right title='.$title.' ';
}
public function getName()
{
return 'tooltip_extension';
}
}
它按我想要的方式返回字符串。但是,在 html 代码中,它看起来像这样:
<i data-original-title=""this" class="icon" data-toggle="tooltip" data-placement="top" title="" is="" great="" tooltip"=""></i>
正如你所看到的,我已经添加了['is_safe'=>['html']]
,但它根本没有改变任何东西。
我试图将空间更改为硬空间,但没有效果。
更糟糕的是,工具提示显示如下:忽略所有空格和引号或撇号。它应该看起来像这样:
请帮我解决它!:)