Attributwerte aus Datenbank brechen

tklustig

Erfahrenes Mitglied
Hallo Leute,
folgender Code liest Attributwerte aus einer Datenbank als Tooltip aus
PHP:
    [
        'attribute' => $dummy,
        'label' => Yii::t('app', 'Charakterisierung'),
        'format' => 'html', // sorgt dafür,dass das HTML im return gerendert wird
        'vAlign' => 'middle',
        'value' => function($model) {
            if (!(empty($model->person->personentypDominant->typ_name))) {
                $tag = Html::tag('span', 'Touch Me!', [
                            'title' => $model->person->personentypDominant->typ_empfehlung ,
                            'data-toggle' => 'tooltip',
                            'style' => 'white-space:pre;width:400px;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 ;
            }
        }
    ],
Der Value unter 'title' sieht folgendermasen aus:
Code:
Verhaltensempfehlung:/n
/n
Kompetenz und Selbstbewusstsein zeigen,/n
fester Händedruck, auf Augenhöhe begegnen,/n
klar machen, dass man ein gleichwertiger Partner ist,/n
.
.
Ich möcht, dass überall da, wo ein \n steht die Zeile gebrochen wird, sprich der Inhalt mit einem Zeilenumbruch dargestellt wird. Folgender Code erwirkt rein gar nix
PHP:
       if($model->person->personentypDominant->typ_empfehlung=="\n") die();
Ein var_dump zeigt folgendes auf:
Code:
E:\xampp\htdocs\yii2_perswitch\frontend\modules\bewerber\views\bewerber\index.php:530:string 'Verhaltensempfehlung:/n
/n
Kompetenz und Selbstbewusstsein zeigen,/n
fester Händedruck, auf Augenhöhe begegnen,/n
klar machen, dass man ein gleichwertiger Partner ist,/n
das Gefühl geben, dass er die Kontrolle über das Gespräch hat,/n
smalltalk vermeiden, direkt zum Punkt kommen, keine Plaudereien,/n
Betonen der Vorteile kurz und knackig, alles erwähnen was ihm Macht, Prestige, Ansehen und Einfluss bringt/n
/n
Vorbereitung:/n
/n
Dokumente, durch die er alles mit einem Blick wahrnehmen kann: Pläne, Gr'... (length=878)

Die einzige Vorgehensweise, die mir momentan einfällt, wäre folgende:
  1. String in Array umwandeln
  2. Iterativ über das Array gehen und überall da, wo ein \n steht, einen Zeilenumbruch erwirken
  3. Array wieder in einen String umwandeln
  4. Gebrochenen String ausgeben
Das dünkt mich des Aufwandes zu viel ob dieser eigentlich eher trivialen Intention.
Ideen ,wie ich es einfacher anpacken könnte?
 
Zuletzt bearbeitet:
Ich hab's. Zunächst ersetze ich das \n in der Datenbank durch ein Semikolon. Dann codiere ich wie folgt:
PHP:
$string = str_replace(";", "\n", $model->person->personentypDominant->typ_empfehlung);
Ein var_dump zeigt den String gebrochen auf, allerdings wird er in der Toolbox immer noch als Ganzes angezeigt(s.Anhang:"Toolbox.jpg")
Ideen, wie ich es korrekt implementiere?
 

Anhänge

  • Toolbox.jpg
    Toolbox.jpg
    136,8 KB · Aufrufe: 3
Zuletzt bearbeitet:
Hallo tklustik,
hast du es mal mit nl2br probiert?

Da in den meisten fällen der Tooltip nur ein HTML-Element ist, welches eingeblendet wird haben normale Linebreaks keinen Effekt.
Durch die Funktion werden Linebreaks in HTML-Elemente des Typs br umgewandelt.
 
Zurück