小枝テンプレート内で 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']]
たが、何も変更されていません。
スペースをハードスペースに変更しようとしましたが、効果がありませんでした。
さらに悪いことに、ツールチップは次のように表示されます:すべてのスペースと引用符またはアポストロフィを無視します。次のよう
になります。修正方法を教えてください。:)