es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo configurar contenido con salto de línea y etiquetas html en tinyEditor

Estoy guardando el contenido del editor tinymce en una tabla de MySQL y me gustaría pegar el mismo contenido que he recuperado de la base de datos de nuevo en el editor.

Utilizo la función htmlentities() para codificar la entrada, guardarla en la base de datos y luego decodificar el contenido con htmlentitydecode() antes de mostrarlo.

post); ?>

mostrará:


adf adf adfadf aadf image

Me enfrento a dos problemas:
1. ¿Cómo mostrar este contenido como HTML y no solo como texto?
2. También me gustaría establecer el contenido del tinyEditor con este valor recuperado de la base de datos.

Este fragmento de código lo hace (tomado del blog de Tiny):


tinymce.init({
selector: '#myTextarea',
setup: function (editor) {
editor.on('init', function (e) {
editor.setContent('post; ?>');
});
}
});

Sin embargo, solo funciona cuando $content->post contiene una sola palabra (sin espacio, sin salto de línea, sin carácter especial).

En cuanto hay un salto de línea o un espacio, obtengo el error:


Uncaught SyntaxError: ' ' literal de cadena contiene un salto de línea no escapado

¿Cómo puedo manejar esos problemas?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar el contenido recuperado de la base de datos como HTML, puedes utilizar la función htmlspecialchars_decode() en lugar de html_entity_decode(). Esto convertirá todos los caracteres especiales de vuelta a sus respectivos caracteres HTML.

    <?php echo htmlspecialchars_decode($content->post); ?>
    

    Para establecer el contenido del TinyEditor con el valor recuperado, puedes utilizar la función encodeURIComponent() para codificar el contenido antes de pasarlo al método setContent(). Esto asegura que el contenido esté correctamente formateado y pueda manejar saltos de línea, espacios y caracteres especiales.

    tinymce.init({
        selector: '#myTextarea',
        setup: function (editor) {
            editor.on('init', function (e) {
                editor.setContent(decodeURIComponent('<?php echo rawurlencode($content->post); ?>'));
            });
        }
    });
    

    Utilizar la función rawurlencode() codificará el contenido para que no contenga ningún carácter inválido. Luego, utilizar decodeURIComponent() hará que esté listo para pasar al método setContent().

Comments are closed.