vistas plantillas para mail gratis for descargar ciclo auth php laravel laravel-4 laravel-blade

php - plantillas - laravel escapando todo el HTML en la plantilla de la cuchilla



plantillas para laravel gratis (6)

Estoy construyendo un pequeño CMS en laravel y cada vez que intenté mostrar el contenido que está almacenado en la base de datos que muestra las etiquetas HTML en lugar de ejecutarlas es como si hubiera un auto html_entity_decode para todos los datos impresos

<?php class CmsController extends BaseController { public function Content($name) { $data = Pages::where(''CID'', ''='', Config::get(''company.CID'')) ->where(''page_name'', ''='', $name) ->first(); return View::make(''cms.page'')->with(''content'', $data); } } ?>

Traté de imprimir el contenido usando una llave

{{$content->page_desc}}

y tres llaves rizadas

{{{$content->page_desc}}}

y dan el mismo resultado
Necesito ejecutar esas etiquetas HTML en lugar de escapar de ellas


Cambia tu sintaxis de {{ }} a {!! !!} {!! !!} .

Como dijo The Alpha en un comentario anterior (no es una respuesta, así que pensé en publicar), en Laravel 5, la {{ }} (sintaxis de salida anteriormente no escapada) ha cambiado a {!! !!} {!! !!} . Reemplaza {{ }} con {!! !!} {!! !!} y debería funcionar.


Incluye el contenido en {! !}.


No hay problema con mostrar el código HTML en las plantillas blade.

Para la prueba, puede agregar a routes.php solo una ruta:

Route::get(''/'', function () { $data = new stdClass(); $data->page_desc = ''<strong>aaa</strong><em>bbb</em> <p>New paragaph</p><script>alert("Hello");</script>''; return View::make(''hello'')->with(''content'', $data); } );

y en el archivo hello.blade.php :

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> </head> <body> {{ $content->page_desc }} </body> </html>

Para el siguiente código obtendrá resultados como en la imagen

Entonces probablemente page_desc en su caso no es lo que espera. Pero como puede ver, puede ser potencialmente peligroso si alguien usa, por ejemplo, una etiqueta '''', por lo que probablemente debería en su ruta antes de asignar a la plantilla de la cuchilla filtrar algunas etiquetas.

EDITAR

También lo probé poniendo el mismo código en la base de datos:

Route::get(''/'', function () { $data = User::where(''id'',''='',1)->first(); return View::make(''hello'')->with(''content'', $data); } );

La salida es exactamente la misma en este caso

Edit2

Tampoco sé si Pages es su modelo o es un modelo de proveedor. Por ejemplo, puede tener acceso de acceso dentro:

public function getPageDescAttribute($value) { return htmlspecialchars($value); }

y luego cuando obtienes el atributo page_desc obtendrás page_desc modificado con htmlspecialchars . Por lo tanto, si está seguro de que los datos en la base de datos están en formato html sin formato (no escapado), debería consultar esta clase de Pages


Tuve el mismo problema. Gracias por las respuestas anteriores, resolví mi problema. Si hay personas que enfrentan el mismo problema, aquí hay dos formas de resolverlo:

  • Puedes usar {!! $news->body !!} {!! $news->body !!}
  • Puede utilizar la apertura tradicional de php (no se recomienda) como: <?php echo $string ?>

Espero que ayude.


usa esta etiqueta {!! texto descriptivo !!}


{{html_entity_decode ($ post-> content ())}} me ha guardado el problema con Laravel 4.0. Ahora mi contenido HTML se interpreta como debería.