Yii2: HTML не будет отображаться с помощью всплывающей подсказки - PullRequest
0 голосов
/ 02 мая 2018

Подсказка: вставлены ссылки на Pastebin, как показано в моем последнем комментарии

Подсказка: решение Мухаммеда все еще не работает (см. Рисунок с новой подсказкой)! enter image description here

Мой файл макета закодирован так:

<?php

use yii\helpers\Html;
use common\wsl_components\AdminLteAsset;

$js = <<<SCRIPT
$(function () {
   $('body').tooltip({
    selector: '[data-toggle="tooltip"]',
        html:true
    });
});
SCRIPT;
// Register tooltip/popover initialization javascript
$this->registerJs($js);
AdminLteAsset::register($this);
$this->beginPage()
?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
    <head>
        <meta charset="<?= Yii::$app->charset ?>"/>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <?= Html::csrfMetaTags() ?>
        <title><?= Html::encode($this->title) ?></title>
        <?php $this->head(); ?>
    </head>
    <body class="hold-transition skin-blue sidebar-mini sidebar-collapse">
        <?php $this->beginBody(); ?>
        <div class="wrapper">
            <?=
            $this->render(
                    'header.php'
            );
            ?>
            <?=
            $this->render(
                    'left.php'
            );
            ?>
            <?=
            $this->render(
                    'content.php', ['content' => $content]
            );
            ?>
        </div>

        <?php $this->endBody(); ?>
    </body>
</html>
<?php $this->endPage(); ?>

Мой GridView закодирован так:

[
    'attribute' => $dummy ,
    'label' => Yii::t ( 'app' , 'Charakterisierung' ) ,
    'format' => 'html' ,
    'value' => function($model) {
        if ( !empty ( $model->person->personentypDominant->typ_name ))  {
            $tag = Html::tag ( 'span' , 'Tooltip-Touch Me!' , [
                   // html-tags won't be rendered in title
                   'title' => $model->person->personentypDominant->typ_empfehlung ,
                   'data-placement' => 'left' ,
                   'data-toggle'=>'tooltip',
                   'style' => 'white-space:pre;border:1px solid red;'
            ] );
            return $tag . "<br>" . $model->person->personentypDominant->typ_verhaltensmerkmal_im_team_1 . "," . $model->person->personentypDominant->typ_verhaltensmerkmal_bei_stress_3 . "," . $model->person->personentypDominant->typ_verhaltensmerkmal_am_arbeitsplatz_4;
        }
    }
],

Тем не менее, HTML-теги в подсказке не будут отображаться. Они появляются, как они есть в базе данных, например, так:

Verhaltensempfehlung:<br><ul><li>
Kompetenz und Selbstbewusstsein zeigen,</ul></li>

Не знаю почему, но верхние теги не будут интерпретироваться. Они во всплывающей подсказке. Есть идеи, что я делаю не так?

Редактировать: Мой вопрос, на который ответил Мухаммед, точно такой же, но ответ не решил мою проблему! Чтобы показать мою проблему, посмотрите на приложение, пожалуйста!

enter image description here

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

В случае, если вы все еще не можете получить представление о HTML внутри всплывающей подсказки после ответа @Muhammad Omer Aslam.

  1. Попробуйте добавить 'data-html' => 'true' или js way $(selector).tooltip({html: true}) ПРИМЕЧАНИЕ: на основе официальной документации по начальной загрузке Use text if you're worried about XSS attacks.
  2. Проверьте, не включен ли виджет всплывающей подсказки jquery-ui. Который перезапишет всплывающую подсказку начальной загрузки. Чтобы исправить это, добавьте скрипт вроде:
$(selector).tooltip({
    content: function () {
        return this.getAttribute("title");
    },
});

В этой ссылке вы можете найти другие способы исправить подсказку jQeuer-UI

0 голосов
/ 16 мая 2018

У вас, по-видимому, 2 ошибки

  1. В этом view, который вы указали в строке 149, вам не хватает атрибута data-toggle="tooltip" на участках.

    изменить их на

    $tag_rot = Html::tag(
        'span', 'Typ Rot', [
            'title' => $tooltip_rot,
            'data-toggle' => 'tooltip',
            'data-placement' => 'left',
            'style' => 'white-space:pre;border:2px solid red;'
        ]
    );
    $tooltip_green = \common\modules\lookup\models\LPersonentyp::findOne(2)->typ_empfehlung;
    $tag_green = Html::tag(
        'span', 'Typ Grün', [
            'title' => $tooltip_green,
            'data-toggle' => 'tooltip',
            'data-placement' => 'left',
            'style' => 'white-space:pre;border:2px solid green;'
        ]
    );
    $tooltip_blue = \common\modules\lookup\models\LPersonentyp::findOne(3)->typ_empfehlung;
    $tag_blue = Html::tag(
        'span', 'Typ Blau', [
            'title' => $tooltip_blue,
            'data-toggle' => 'tooltip',
            'data-placement' => 'left',
            'style' => 'white-space:pre;border:2px solid blue;'
        ]
    );
    
  2. В столбце Gridview вы используете "format"=>"html", тогда как вы должны использовать "format"=>"raw"

    изменить определение столбца на следующее

    [
        'attribute' => $dummy ,
        'label' => Yii::t ( 'app' , 'Charakterisierung' ) ,
        'format' => 'raw' ,
        'value' => function($model) {
            if ( !empty ( $model->person->personentypDominant->typ_name ) ) {
                $tag = Html::tag ( 'span' , 'Tooltip-Touch Me!' , [
                            'title' => $model->person->personentypDominant->typ_empfehlung ,
                            'data-placement' => 'left' ,
                            'data-toggle' => 'tooltip' ,
                            'style' => 'white-space:pre;border:1px solid red;'
                ] );
                return $tag . "<br>" . $model->person->personentypDominant->typ_verhaltensmerkmal_im_team_1 . "," . $model->person->personentypDominant->typ_verhaltensmerkmal_bei_stress_3 . "," . $model->person->personentypDominant->typ_verhaltensmerkmal_am_arbeitsplatz_4;
            }
        }
    ] ,
    

ANSWER, который я дал ранее, был более сфокусирован на использовании всплывающей подсказки с html::tag(), и я использовал ваш код для столбца gridview, чтобы скопировать вставку, и забыл упомянуть это там в случае использования внутри gridview, я тоже обновил этот ответ.

...