1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Attributwerte aus Datenbank brechen

Dieses Thema im Forum "PHP" wurde erstellt von tklustig, 14. Februar 2018 um 18:51 Uhr.

  1. tklustig

    tklustig Mitglied

    Hallo Leute,
    folgender Code liest Attributwerte aus einer Datenbank als Tooltip aus
    PHP:
    1.     [
    2.         'attribute' => $dummy,
    3.         'label' => Yii::t('app', 'Charakterisierung'),
    4.         'format' => 'html', // sorgt dafür,dass das HTML im return gerendert wird
    5.         'vAlign' => 'middle',
    6.         'value' => function($model) {
    7.             if (!(empty($model->person->personentypDominant->typ_name))) {
    8.                 $tag = Html::tag('span', 'Touch Me!', [
    9.                             'title' => $model->person->personentypDominant->typ_empfehlung ,
    10.                             'data-toggle' => 'tooltip',
    11.                             'style' => 'white-space:pre;width:400px;border:1px solid red;'
    12.                 ]);
    13.                 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 ;
    14.             }
    15.         }
    16.     ],
    Der Value unter 'title' sieht folgendermasen aus:
    Code (Text):
    1. Verhaltensempfehlung:/n
    2. /n
    3. Kompetenz und Selbstbewusstsein zeigen,/n
    4. fester Händedruck, auf Augenhöhe begegnen,/n
    5. klar machen, dass man ein gleichwertiger Partner ist,/n
    6. .
    7. .
    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:
    1.        if($model->person->personentypDominant->typ_empfehlung=="\n") die();
    Ein var_dump zeigt folgendes auf:
    Code (Text):
    1. E:\xampp\htdocs\yii2_perswitch\frontend\modules\bewerber\views\bewerber\index.php:530:string 'Verhaltensempfehlung:/n
    2. /n
    3. Kompetenz und Selbstbewusstsein zeigen,/n
    4. fester Händedruck, auf Augenhöhe begegnen,/n
    5. klar machen, dass man ein gleichwertiger Partner ist,/n
    6. das Gefühl geben, dass er die Kontrolle über das Gespräch hat,/n
    7. smalltalk vermeiden, direkt zum Punkt kommen, keine Plaudereien,/n
    8. Betonen der Vorteile kurz und knackig, alles erwähnen was ihm Macht, Prestige, Ansehen und Einfluss bringt/n
    9. /n
    10. Vorbereitung:/n
    11. /n
    12. 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: 14. Februar 2018 um 19:01 Uhr
  2. tklustig

    tklustig Mitglied

    Ich hab's. Zunächst ersetze ich das \n in der Datenbank durch ein Semikolon. Dann codiere ich wie folgt:
    PHP:
    1. $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:

    Zuletzt bearbeitet: 14. Februar 2018 um 19:28 Uhr
  3. merzi86

    merzi86 Erfahrenes Mitglied

    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.
     
Die Seite wird geladen...