Summernote is a WYSIWYG (What You See Is What You Get) style editor which offers lots of nifty features such as pasting images from clipboard, interactive text editing, easy server integration and it has all the features for standard HTML formatting.
I recently had to use summernote in a Laravel based project at work, and I must say it was a breeze to set up and get running. Also, the Summernote project is very active and has over 6000 stars on GitHub which makes me happy as it means better future maintainability and support. Now let me show you how you can implement Summernote with Laravel.
Set up routes:
- We define routes for displaying summernote form, storing the summernote content and finally to display the content by fetching it from the database.
- Note that the
Route::viewmethod is new in laravel 5.5 and if you are using an older version then you can use a traditionalRoute::getand return the view in a method callback.
Summernote input form:
- Create a
summernote.blade.phpand add the form which is going to display our summernote input. - We will include summernote related assets and initialize summernote on our
textareainput which has a class ofsummernoteondocument ready, - My Summernote view:

Parse and store Summernote content:
- Generate a
modelalong with aresourceful controllerand amigrationfile. - Add a
longTextcontent field to the summernote migration so that it can suffice for a decent length of content. - Don’t forget to generate summernote table from the
migrationfile. - Now we will parse our
summernoteInputin the store method ofSummernoteController.- We use
domdocument()method to generate a native PHP dom object which makes it easier to navigate HTML in a logical manner. - Also, the Summernote
encodesany images in the content tobase64format which means easy transfer from client to server but is not feasible if you intend to store the content in a database. As even a small image encoded inbase64format could add tens of thousands of characters to the content. - We work around this by
decodingthebase64format image (usingbase64_decode()) and saving it into thepublicdirectory. We then replace thesrcattribute of the image in the content with the link to the image we just stored. - We finally store the content in
DBand return a view to display the content.
- We use
Fetch and display content from the view:
- In
summernote_display.blade.phpadd the following code to display the content.12345<div class="container">{!! $summernote->content !!}</div> - Yeah, a single
{!! $summernote->content !!}is enough!. Note that we use{!! !!}and not{{ }}as the latter escapes the string which we do not want in this case. - This is how mine looks like:
https://www.kerneldev.com/2018/01/11/using-summernote-wysiwyg-editor-with-laravel/
No comments:
Post a Comment