web-dev-qa-db-fra.com

Laravel 5: Afficher le code HTML avec la lame

J'ai une chaîne renvoyée à l'un de mes points de vue, comme ceci:

$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'

J'essaye de l'afficher avec Blade:

{{$text}}

Cependant, la sortie est une chaîne brute au lieu du code HTML rendu. Comment afficher le code HTML avec Blade dans Laravel 5?

PS. PHP echo() affiche le code HTML correctement.

185
lesssugar

Vous devez utiliser

{!! $text !!}

La chaîne s'échappera automatiquement lors de l'utilisation de {{ $text }}.

455
terry low

Pour laravel 5

{!!html_entity_decode($text)!!}

Compris à travers ce link , voir la réponse de RachidLaasri

47
Praveen Dabral

Vous pouvez essayer ceci:

{!! $text !!}

Vous devriez consulter: http://laravel.com/docs/5.0/upgrade#upgrade-5.0

34
rap-2-h

Veuillez utiliser

{!! $test !!} 

Seulement en cas de HTML alors que si vous voulez rendre des données, sting etc. utilisez

{{ $test }}

En effet, lorsque votre fichier de lame est compilé 

{{ $test }} est converti en <?php echo e($test) ?> while 

{!! $test !!} est converti en <?php echo $test ?>

13
Shubham Bansal

Il y a un autre moyen. Si le but de l'objet est de rendre le code HTML, vous pouvez implémenter un contrat \Illuminate\Contracts\Support\Htmlable avec la méthode toHtml().

Vous pouvez ensuite rendre cet objet à partir de la lame comme suit: {{ $someObject }} (remarque, pas besoin de la syntaxe {!! !!}).

De plus, si vous voulez renvoyer une propriété HTML et que vous savez que ce sera du HTML, utilisez la classe \Illuminate\Support\HtmlString comme ceci:

public function getProductDescription()
{
    return new HtmlString($this->description);
}

puis utilisez-le comme {{ $product->getProductDescription() }}.

Bien sûr, soyez responsable lorsque vous rendez directement du code HTML brut sur une page.

7
Damir Miladinov

Essaye ça. Cela a fonctionné pour moi.

{{ html_entity_decode($text) }}

Dans le modèle Laravel Blade, {{}} échappera au code HTML. Si vous souhaitez afficher le code HTML du contrôleur dans la vue, décodez le code HTML de la chaîne.

7
Mohammed Safeer

Vous pouvez utiliser {!! $ text !!} pour le rendu du code HTML dans Laravel

{!! $text !!}

Si tu utilises 

{{ $text }}

Il ne restituera pas le code HTML et ne sera pas imprimé sous forme de chaîne.

4
PPL

vous pouvez faire de nombreuses manières dans laravel 5 ..

{!! $text !!}

{!! html_entity_decode($text) !!}
3
Jignesh Joisar

Utilisez {!! $text !!} pour afficher les données sans les échapper. Veillez simplement à ne pas le faire avec des données provenant de l’utilisateur et qui n’ont pas été nettoyées. 

2
Patrick Luy

c'est un simple 

{!! $text !!}

laravel compile en tant qu'élément dom et {{$text}} s'imprime en tant que chaîne 

1

Cela fonctionne très bien pour Laravel 5.6

<?php echo "$text"; ?>

D'une autre façon

{!! $text !!}

Il ne restituera pas le code HTML et ne sera pas imprimé sous forme de chaîne.

Pour plus de détails ouvrir le lien: - Afficher HTML avec Blade

1
Udhav Sarvaiya

Si vous voulez échapper à l'utilisation des données 

{{ $html }}

Si vous ne voulez pas échapper à l'utilisation des données 

{!! $html !!}

Mais jusqu'à Laravel-4, vous pouvez utiliser 

{{ HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) }}

Quand arrive à Laravel-5 

{!! HTML::link('/auth/logout', 'Sign Out', array('class' => 'btn btn-default btn-flat')) !!} 

Vous pouvez également le faire avec la fonction PHP

{{ html_entity_decode($data) }}

passer par le document PHP pour les paramètres de cette fonction

html_entity_decode - php.net

1
Reiah Paul Sam

Pour qui utilise tinymce et markup dans textarea:

{{ htmlspecialchars($text) }}
0
Hung

J'y suis allé et c'était de ma faute. Et très stupide.

si vous oubliez l'extension .blade dans le nom du fichier, ce fichier ne comprend pas la lame mais exécute du code php. Tu devrais utiliser

/resources/views/filename.blade.php

au lieu de

/resources/views/filename.php

espérons que cela aide quelqu'un

0
Ali Aydin

Vous pouvez le faire en utilisant trois façons de commencer par utiliser si

{!! $text !!}

La deuxième voie

<td class="nowrap">
@if( $order->status == '0' )
    <button class="btn btn-danger">Inactive</button>
@else
    <button class="btn btn-success">Active</button>
@endif
</td>

La troisième manière appropriée d’utiliser l’opérateur ternaire sur la lame

<td class="nowrap">
      {!! $order->status=='0' ? 
          '<button class="btn btn-danger">Inactive</button> : 
          '<button class="btn btn-success">Active</button> !!}
</td>

J'espère que la troisième voie est parfaite pour l'opérateur ternaire utilisé sur la lame.

0
Uzair

Essayez ceci, cela a fonctionné 
@ php echo $ text; @endphp

0
ShuBham GuPta