J'ai une chaîne retournée à l'une de mes vues, comme ceci:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
J'essaie de l'afficher avec Blade:
{{$text}}
Cependant, la sortie est une chaîne brute au lieu de HTML rendu. Comment afficher du HTML avec Blade dans Laravel 5?
PS. PHP echo()
affiche correctement le HTML.
{!! nl2br($post->description) !!}
fonctionne pour moi si je n'ai que des espaces et br.Réponses:
Vous devez utiliser
La chaîne s'échappera automatiquement lors de l'utilisation
{{ $text }}
.la source
Hello, {!! $name !!}.
" laravel.com/docs/5.5/blade#displaying-data$text
contient des entrées utilisateur et que vous n'y avez pas échappé correctement. Par exemple,$text = 'Hello <b>'.$_GET['name'].'</b>';
est dangereux car$_GET['name']
pourrait inclure du HTML, ce qui autoriserait XSS. Vous pourriez le faire$text = 'Hello <b>'.htmlentities($_GET['name']).'</b>';
et seriez en sécurité.<meta cc="grâce à">
et que je veux le montrer en lame, ça ressemblera à ça<meta cc="grâce à">
. Donc la réponse pour moi est @Praveen_DabralPour laravel 5
Compris via ce lien , voir la réponse de RachidLaasri
la source
Vous pouvez essayer ceci:
Vous devriez jeter un œil à: http://laravel.com/docs/5.0/upgrade#upgrade-5.0
la source
Veuillez utiliser
Uniquement en cas de HTML alors que si vous voulez rendre des données, piquer etc. utilisez
En effet, lorsque votre fichier de lame est compilé
{{ $test }}
est converti en<?php echo e($test) ?>
tout{!! $test !!}
est converti en<?php echo $test ?>
la source
Il y a une autre manière. Si le but de l'objet est de rendre du HTML, vous pouvez implémenter un
\Illuminate\Contracts\Support\Htmlable
contrat qui a unetoHtml()
méthode.Ensuite, vous pouvez rendre cet objet à partir de la lame comme ceci:
{{ $someObject }}
(remarque, pas besoin de{!! !!}
syntaxe).De plus, si vous souhaitez renvoyer la propriété html et que vous savez que ce sera html, utilisez une
\Illuminate\Support\HtmlString
classe comme celle-ci:puis l'utiliser comme
{{ $product->getProductDescription() }}
.Bien sûr, soyez responsable lors du rendu direct du code HTML brut sur la page.
la source
Essaye ça. Ça a marché pour moi.
Dans le modèle Laravel Blade, {{}} échappera au HTML. Si vous souhaitez afficher le html du contrôleur en vue, décodez le html de la chaîne.
la source
Vous pouvez utiliser {!! $ text !!} pour le rendu du code HTML dans Laravel
Si tu utilises
Il ne rendra pas le code HTML et ne sera pas imprimé sous forme de chaîne.
la source
Utilisez
{!! $text !!}
pour afficher les données sans y échapper. Assurez-vous simplement que vous ne le faites pas avec des données provenant de l'utilisateur et qui n'ont pas été nettoyées.la source
c'est simple
laravel compile comme un élément dom et
{{$text}}
imprime comme une chaînela source
vous pouvez faire de nombreuses façons dans laravel 5 ..
la source
Vous pouvez le faire en utilisant trois façons d'utiliser d'abord si la condition comme ci-dessous
C'est la deuxième façon
La troisième et bonne façon d'utiliser l'opérateur ternaire sur la lame
J'espère que la troisième voie est parfaite pour l'opérateur ternaire d'occasion sur lame.
la source
Pour ajouter des explications supplémentaires, le code à l'intérieur des
{{ }}
instructions Blade est automatiquement transmis via lahtmlspecialchars()
fonction fournie par php. Cette fonction prend une chaîne et trouvera tous les caractères réservés que HTML utilise. Les caractères réservés sont&
<
>
et"
. Il remplacera ensuite ces caractères réservés par leur variante d'entité HTML. Quels sont les suivants:Par exemple, supposons que nous ayons l'instruction php suivante:
Passé dans la lame comme
{{ $hello }}
donnerait la chaîne littérale que vous avez passée:Sous le capot, cela résonnerait
<b>Hello<b>
Si nous voulions contourner cela et le rendre réellement en tant que balise en gras, nous échappons à la
htmlspecialchars()
fonction en ajoutant le panneau de syntaxe d'échappement:{!! $hello !!}
Notez que nous n'utilisons qu'une seule accolade.
La sortie de ce qui précède donnerait:
Bonjour
Nous pourrions également utiliser une autre fonction pratique fournie par php, qui est la
html_entity_decode()
fonction. Cela convertira les entités HTML en leurs caractères HTML respectés. Considérez-le comme l'inverse dehtmlspecialchars()
Par exemple, disons que nous avons l'instruction php suivante:
Nous pouvons maintenant ajouter cette fonction à notre déclaration de lame échappée:
Cela prendra l'entité HTML
<
et l'analysera en tant que code HTML<
, pas seulement une chaîne.Il en sera de même pour l'entité supérieure à
>
ce qui donnerait
Bonjour
Tout l'intérêt de s'échapper en premier lieu est d'éviter les attaques XSS. Soyez donc très prudent lorsque vous utilisez la syntaxe d'échappement, surtout si les utilisateurs de votre application fournissent eux-mêmes le code HTML, ils peuvent injecter leur propre code à leur guise.
la source
Si vous voulez échapper à l'utilisation des données
Si vous ne voulez pas échapper à l'utilisation des données
Mais jusqu'à Laravel-4, vous pouvez utiliser
En ce qui concerne Laravel-5
Vous pouvez également le faire avec la fonction PHP
parcourir le document PHP pour les paramètres de cette fonction
html_entity_decode - php.net
la source
Cela fonctionne bien pour Laravel 5.6
D'une autre façon
Il ne rendra pas le code HTML et ne sera pas imprimé sous forme de chaîne.
Pour plus de détails, ouvrez le lien: - Afficher HTML avec Blade
la source
Pour ceux qui utilisent tinymce et le balisage dans la zone de texte:
la source
J'y suis allé et c'était ma faute. Et très stupide.
si vous oubliez l'extension .blade dans le nom du fichier, ce fichier ne comprend pas blade mais exécute le code php. Tu devrais utiliser
au lieu de
j'espère que cela aide quelqu'un
la source
Essayez ceci, cela a fonctionné:
la source
Si vous utilisez la classe Bootstrap Collapse, cela
{!! $text !!}
ne fonctionne parfois pas pour moi mais l'{{ html_entity_decode($text) }}
est pour moi.la source