Tengo una cadena devuelta a una de mis vistas, así:
$text = '<p><strong>Lorem</strong> ipsum dolor <img src="images/test.jpg"></p>'
Estoy tratando de mostrarlo con Blade:
{{$text}}
Sin embargo, el resultado es una cadena sin formato en lugar de HTML procesado. ¿Cómo visualizo HTML con Blade en Laravel 5?
PD. PHP echo()
muestra el HTML correctamente.
{!! nl2br($post->description) !!}
funciona para mí si solo tengo espacios y br.Respuestas:
Necesitas usar
La cadena se escapará automáticamente cuando se use
{{ $text }}
.fuente
Hello, {!! $name !!}.
" laravel.com/docs/5.5/blade#displaying-data$text
contiene información del usuario y no escapó de esta manera. Por ejemplo,$text = 'Hello <b>'.$_GET['name'].'</b>';
es peligroso porque$_GET['name']
podría incluir HTML, lo que permitiría XSS. Podrías hacerlo$text = 'Hello <b>'.htmlentities($_GET['name']).'</b>';
y estarías a salvo.<meta cc="grâce à">
y quiero mostrarlo en Blade, se verá así<meta cc="grâce à">
. Entonces la respuesta para mí es @Praveen_Dabral 'sPara laravel 5
A través de este enlace , vea la respuesta de RachidLaasri
fuente
Puedes probar esto:
Debe echar un vistazo a: http://laravel.com/docs/5.0/upgrade#upgrade-5.0
fuente
Por favor use
Solo en el caso de HTML, mientras que si desea representar datos, picadura, etc. use
Esto se debe a que cuando se compila su archivo Blade
{{ $test }}
se convierte a<?php echo e($test) ?>
while{!! $test !!}
se convierte a<?php echo $test ?>
fuente
Hay otra manera Si el objetivo del objeto es renderizar html, puede implementar un
\Illuminate\Contracts\Support\Htmlable
contrato que tenga untoHtml()
método.Luego puede renderizar ese objeto desde la hoja de esta manera:
{{ $someObject }}
(nota, no hay necesidad de{!! !!}
sintaxis).Además, si desea devolver la propiedad html y sabe que será html, use una
\Illuminate\Support\HtmlString
clase como esta:y luego úsalo como
{{ $product->getProductDescription() }}
.Por supuesto, sea responsable al representar directamente html sin procesar en la página.
fuente
Prueba esto. Funcionó para mi.
En la plantilla Laravel Blade, {{}} escapará html. Si desea mostrar html desde el controlador a la vista, descodifique html desde la cadena.
fuente
Puedes usar {!! $ text !!} para renderizar código HTML en Laravel
Si utiliza
No representará el código HTML e imprimirá como una cadena.
fuente
Se usa
{!! $text !!}
para mostrar datos sin escapar de ellos. Solo asegúrese de no hacer esto con los datos que provienen del usuario y que no se han limpiado.fuente
es un simple
compilar laravel como elemento dom e
{{$text}}
imprimir como una cadenafuente
puedes hacerlo de muchas maneras en laravel 5 ..
fuente
Puede hacerlo usando tres formas de primer uso si la condición como a continuación
El es la segunda forma
La tercera y adecuada forma de usar el operador ternario en la cuchilla
Espero que la tercera forma sea perfecta para el operador ternario usado en la cuchilla.
fuente
Para agregar más explicaciones, el código dentro de las
{{ }}
declaraciones de Blade se pasa automáticamente a través de lahtmlspecialchars()
función que proporciona php. Esta función toma una cadena y encontrará todos los caracteres reservados que usa HTML. Los caracteres reservados son&
<
>
y"
. Luego reemplazará estos caracteres reservados con su variante de entidad HTML. ¿Cuáles son los siguientes:Por ejemplo, supongamos que tenemos la siguiente declaración php:
Pasó a blade como
{{ $hello }}
produciría la cadena literal que pasó:Debajo del capó, en realidad resonaría como
<b>Hello<b>
Si quisiéramos omitir esto y realmente representarlo como una etiqueta en negrita, escaparemos de la
htmlspecialchars()
función al agregar la hoja de sintaxis de escape que proporciona:{!! $hello !!}
Tenga en cuenta que solo usamos una llave rizada.
El resultado de lo anterior produciría:
Hola
También podríamos utilizar otra función útil que proporciona php, que es la
html_entity_decode()
función. Esto convertirá las entidades HTML en sus respetados caracteres HTML. Piense en ello como el reverso dehtmlspecialchars()
Por ejemplo, digamos que tenemos la siguiente declaración php:
Ahora podríamos agregar esta función a nuestra declaración de la hoja de escape:
Esto tomará la entidad HTML
<
y la analizará como código HTML<
, no solo una cadena.Lo mismo se aplicará con la entidad mayor que
>
lo que daría lugar
Hola
El objetivo principal de escapar en primer lugar es evitar los ataques XSS. Por lo tanto, tenga mucho cuidado al usar la sintaxis de escape, especialmente si los usuarios de su aplicación proporcionan el HTML ellos mismos, podrían inyectar su propio código cuando lo deseen.
fuente
Si quieres escapar del uso de datos
Si no quiere escapar del uso de datos
Pero hasta Laravel-4 puedes usar
Cuando se trata de Laravel-5
También puedes hacer esto con la función PHP
revise el documento PHP para ver los parámetros de esta función
html_entity_decode - php.net
fuente
Esto funciona bien para Laravel 5.6
De una manera diferente
No representará el código HTML e imprimirá como una cadena.
Para obtener más detalles, abra el enlace: - Mostrar HTML con Blade
fuente
Para quienes usan tinymce y marcado en textarea:
fuente
He estado allí y fue mi culpa. Y muy estúpido.
si olvida la extensión .blade en el nombre del archivo, ese archivo no entiende la hoja pero ejecuta el código php. Deberías usar
en vez de
Espero que esto ayude a alguien
fuente
Prueba esto, ha funcionado:
fuente
Si usa la clase Bootstrap Collapse, a veces
{!! $text !!}
no funciona para mí, pero sí{{ html_entity_decode($text) }}
.fuente