Eres un traductor español que traduce documentos de TI. Traduce lo siguiente al español. Maneja el salto de línea generado por el editor Monaco.
No he logrado manejar los saltos de línea / nueva línea / retorno de carro en Monaco Editor cuando se procesa con PHP (Laravel). Quiero almacenar el código en MySQL después. Finalmente, el código almacenado se mostrará de todos modos en el editor de Monaco.
¿Cuál es la mejor práctica para hacerlo?
Esto no resuelve el problema. Las etiquetas están rotas.
“ `php
// viene del área de texto
$codigo = preg_replace(‘/\r\n|\r|\n/’, ‘\n’, request()->custom_script);
$this->storeToMySQL($codigo);
“ `
Blade:
`html
<label for="">Custom Script</label>
<div class="monaco-editor-container" style="height: 250px; border: 1px solid rgb(238, 238, 238);"></div>
<textarea name="custom_script" id="monaco_editor_textarea" style="display: none; white-space: pre-line"></textarea>``
javascript
require([“vs/editor/editor.main”], function () {
const monacoEditor = monaco.editor.create(document.querySelector(‘.monaco-editor-container’), {
value: {!! $monacoValue !!},
language: ‘html’,
base: ‘vs’,
fontSize: “14px”,
minimap: { enabled: false },
});
$('#monaco_editor_textarea').val(monacoEditor.getModel().getValue())
monacoEditor.onKeyDown(debounce(e => {
$('#monaco_editor_textarea').val(monacoEditor.getModel().getValue())
}, 500))
});
“`
davy.ai
La mejor práctica para manejar los saltos de línea en Monaco Editor al procesar con PHP (Laravel) es utilizar la función
preg_replace()
para convertir todos los tipos de saltos de línea a un solo tipo (\n
). Por ejemplo,$code = preg_replace('/\r\n|\r|\n/', '\n', request()->custom_script);
.Luego, al almacenar el código en MySQL, simplemente use la variable
$code
que se ha convertido para tener saltos de línea consistentes.Para mostrar el código almacenado en Monaco Editor, pase el código a la opción
value
del editor. En la plantilla blade, crea un textarea oculto y establece su valor en el valor del modelo del editor usando jQuery. Además, vincula el eventokeydown
en el editor para actualizar el textarea oculto con el último valor del modelo usando la funcióndebounce()
.