Я пытаюсь отобразить всплывающую подсказку 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']]
, но это совсем ничего не изменило.
Я пытался изменить пробел на жесткий, но безрезультатно.
Что еще хуже, всплывающая подсказка выглядит так: < a href="https://i.stack.imgur.com/QuM3l.png" rel="nofollow noreferrer"> игнорируя все пробелы, кавычки или апострофы. Это должно выглядеть так:
Помогите, пожалуйста, как это исправить! :)
"data" | tooltip | raw
? И, пожалуйста, добавьте часть вашего шаблона ветки, где вы вызываете свой фильтр... - person Ilya Yarkovets   schedule 06.01.2016$title = html_entity_decode(str_replace(' ', ' ', $title));
return ' data-toggle=tooltip data-placement=top title='.($title)';
- person Ilya Yarkovets   schedule 06.01.2016['is_safe'=>['html']]
равно ` |raw` Ваше решение почти отличное, но более длинные тексты не переносятся из-за $nbsp;. Я изменил его на и он отлично работает. Благодарю вас! - person ptyskju   schedule 06.01.2016