{"id":28106,"date":"2021-05-20T10:55:00","date_gmt":"2021-05-20T07:55:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28106"},"modified":"2021-10-17T16:55:51","modified_gmt":"2021-10-17T13:55:51","slug":"como-instalar-y-usar-ckeditor-en-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/es\/como-instalar-y-usar-ckeditor-en-laravel\/","title":{"rendered":"C\u00f3mo instalar y usar CKEditor en Laravel"},"content":{"rendered":"<p>\u00bfQuieres instalar CKEditor en Laravel? CKEditor es un editor HTML WYSIWYG (lo que ves es lo que obtienes) que nos permite escribir formatos de texto enriquecido. En este art\u00edculo, te muestro c\u00f3mo <strong>instalar y usar CKEditor en Laravel<\/strong>.<\/p>\n<h3>\u00bfPor qu\u00e9 es necesario utilizar CKEditor?<\/h3>\n<p>El editor de texto enriquecido es necesario para escribir contenido enriquecido para sus p\u00e1ginas o art\u00edculos. En la p\u00e1gina web, necesitamos tener diferentes elementos como im\u00e1genes, p\u00e1rrafos, enlaces, etc. Todos estos elementos diferentes se pueden agregar usando el CKEditor.<\/p>\n<p>HTML proporciona un elemento de \u00e1rea de texto para escribir la descripci\u00f3n. Pero viene con limitaciones. En textarea, no es f\u00e1cil ni f\u00e1cil de usar escribir otros elementos HTML como p, div, img, etc.<\/p>\n<p>Para superar estas limitaciones, puede utilizar CKEditor, que en s\u00ed mismo es un editor de texto enriquecido. Nuestro editor final se ver\u00e1 como la siguiente captura de pantalla.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20535-608201a68736d.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20535-608201a68736d.png\" alt=\"C\u00f3mo instalar y usar CKEditor en Laravel\" ><\/a><\/p>\n<h3>Instalar CKEditor en Laravel<\/h3>\n<p>Hay 2 formas de instalar CKEditor en Laravel: paquete CDN o CKEditor. Puede obtener ambos recursos en su p\u00e1gina de <a href=\"https:\/\/ckeditor.com\/ckeditor-4\/download\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">descarga<\/a>.<\/p>\n<p>El enlace CDN es <code>\/\/cdn.ckeditor.com\/4.14.0\/standard\/ckeditor.js<\/code>. Si opta por CDN, no necesita descargar nada del sitio web de CKEditor.<\/p>\n<p>Si tiene la intenci\u00f3n de instalarlo sin CDN, descargue el paquete (se recomienda el paquete est\u00e1ndar). A continuaci\u00f3n, cree una carpeta &#8216;ckeditor&#8217; en el directorio &#8216;p\u00fablico&#8217; de su proyecto Laravel. Y dentro de esta carpeta &#8216;ckeditor&#8217;, copie debajo los archivos y carpetas del paquete descargado.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20535-608201a6ee9be.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20535-608201a6ee9be.png\" alt=\"C\u00f3mo instalar y usar CKEditor en Laravel\" ><\/a><\/p>\n<h3>C\u00f3mo utilizar CKEditor<\/h3>\n<p>En esta etapa, ha completado los pasos para instalar el paquete CKEditor. Ahora veamos c\u00f3mo usar CKEditor.<\/p>\n<p>Digamos que tiene un &#8216;textarea&#8217; que deber\u00eda ser reemplazado por CKEditor. Para hacerlo, estoy agregando id &#8216;summary-ckeditor&#8217; al &#8216;textarea&#8217;.<\/p>\n<pre><code>&lt;textarea class=\"form-control\" id=\"summary-ckeditor\" name=\"summary-ckeditor\"&gt;&lt;\/textarea&gt;<\/code><\/pre>\n<p>A continuaci\u00f3n, debe incluir el <code>ckeditor.js<\/code>archivo y escribir un c\u00f3digo JavaScript que reemplace &#8216;textarea&#8217; con CKEditor.<\/p>\n<pre><code>&lt;script src=\"{{ asset('ckeditor\/ckeditor.js') }}\"&gt;&lt;\/script&gt;\n&lt;script&gt;\nCKEDITOR.replace( 'summary-ckeditor' );\n&lt;\/script&gt;<\/code><\/pre>\n<p>El c\u00f3digo JavaScript anterior reemplaza textarea con CKEditor. Si desea utilizar CDN, el c\u00f3digo anterior ser\u00eda el siguiente:<\/p>\n<pre><code>&lt;script src=\"\/\/cdn.ckeditor.com\/4.14.0\/standard\/ckeditor.js\"&gt;&lt;\/script&gt;\n&lt;script&gt;\nCKEDITOR.replace( 'summary-ckeditor' );\n&lt;\/script&gt;<\/code><\/pre>\n<p>Ejecute su p\u00e1gina en el navegador y ahora deber\u00eda poder ver el CKeditor. Ahora puede agregar su contenido al editor y usarlo en su sitio web.<\/p>\n<h3>Cargar e insertar una imagen en CKEditor<\/h3>\n<p>CKEditor por defecto no da la opci\u00f3n de cargar la imagen. Si alguien est\u00e1 buscando ofrecer esta opci\u00f3n, siga leyendo este art\u00edculo. Necesita agregar una ruta Laravel, escribir un c\u00f3digo para la carga de im\u00e1genes y algo de JavaScript en su aplicaci\u00f3n. Primero, para habilitar la opci\u00f3n de carga de im\u00e1genes, debe llamar a CKEditor de la siguiente manera.<\/p>\n<pre><code>&lt;script&gt;\nCKEDITOR.replace( 'summary-ckeditor', {\n\u00a0\u00a0\u00a0\u00a0filebrowserUploadUrl: \"{{route('upload', ['_token' =&gt; csrf_token() ])}}\",\n\u00a0\u00a0\u00a0\u00a0filebrowserUploadMethod: 'form'\n});\n&lt;\/script&gt;<\/code><\/pre>\n<p>Aqu\u00ed, para la clave <code>filebrowserUploadUrl<\/code>, pas\u00e9 la URL de la ruta y el token csrf. Definamos la ruta &#8216;upload&#8217;.<\/p>\n<pre><code>Route::post('ckeditor\/image_upload', 'CKEditorController@upload')-&gt;name('upload');<\/code><\/pre>\n<p>Vuelve a cargar la p\u00e1gina. Ahora, si hace clic en el icono de imagen de CKEditor, ver\u00e1 la opci\u00f3n de carga de imagen como se muestra a continuaci\u00f3n.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20535-608201a6ee9be.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20535-608201a6ee9be.png\" alt=\"C\u00f3mo instalar y usar CKEditor en Laravel\" ><\/a><\/p>\n<p>Para utilizar la imagen cargada en CKEditor, debe cargar la imagen en la carpeta de su aplicaci\u00f3n y enviar una URL de imagen. Para almacenar una imagen en un servidor, usar\u00e9 la funci\u00f3n de almacenamiento de Laravel. Entonces, primero necesito crear un enlace simb\u00f3lico de una carpeta de &#8216;almacenamiento&#8217;. Ejecute el siguiente comando para crear un enlace simb\u00f3lico:<\/p>\n<pre><code>php artisan storage:link<\/code><\/pre>\n<p>Nuestro mapa de &#8216;carga&#8217; de ruta con el m\u00e9todo de carga de <code>CKEditorController<\/code>. As\u00ed que cree un controlador <code>CKEditorController<\/code>y defina el <code>upload<\/code>m\u00e9todo en \u00e9l de la siguiente manera:<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\n\u00a0\nclass CKEditorController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function upload(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($request-&gt;hasFile('upload')) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename with extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenamewithextension = $request-&gt;file('upload')-&gt;getClientOriginalName();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get filename without extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filename = pathinfo($filenamewithextension, PATHINFO_FILENAME);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/get file extension\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = $request-&gt;file('upload')-&gt;getClientOriginalExtension();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/filename to store\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$filenametostore = $filename.'_'.time().'.'.$extension;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/Upload File\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;file('upload')-&gt;storeAs('public\/uploads', $filenametostore);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$CKEditorFuncNum = $request-&gt;input('CKEditorFuncNum');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$url = asset('storage\/uploads\/'.$filenametostore);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$msg = 'Image successfully uploaded';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$re = \"&lt;script&gt;window.parent.CKEDITOR.tools.callFunction($CKEditorFuncNum, '$url', '$msg')&lt;\/script&gt;\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Render HTML output\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0@header('Content-type: text\/html; charset=utf-8');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $re;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Eso es, ahora intente cargar la imagen desde la opci\u00f3n de imagen incorporada de CKEditor y obtendr\u00e1 la imagen agregada en su editor.<\/p>\n<p>Espero que entiendas c\u00f3mo instalar y usar CKEditor en Laravel. Comparta sus pensamientos y sugerencias en el comentario a continuaci\u00f3n.<\/p>\n<h4>Art\u00edculos relacionados<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-usar-laravel-tinker\/\" title=\"C\u00f3mo usar Laravel Tinker\">C\u00f3mo usar Laravel Tinker<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/es\/como-ejecutar-comandos-artesanales-de-laravel-en-texto-sublime\/\" title=\"C\u00f3mo ejecutar comandos artesanales de Laravel en texto sublime\">C\u00f3mo ejecutar comandos artesanales de Laravel en texto sublime<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfQuieres usar CKEditor en Laravel? En este art\u00edculo, le mostramos c\u00f3mo instalar y usar CKEditor en Laravel. CKEditor es un editor de texto web que nos permite<\/p>\n","protected":false},"author":1,"featured_media":21749,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[495],"tags":[849],"class_list":["post-28106","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/comments?post=28106"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/posts\/28106\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media\/21749"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/media?parent=28106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/categories?post=28106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/es\/wp-json\/wp\/v2\/tags?post=28106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}