{"id":832,"date":"2016-10-28T13:26:30","date_gmt":"2016-10-28T13:26:30","guid":{"rendered":"http:\/\/myprojects.advchaweb.com\/?p=832"},"modified":"2016-11-06T08:18:15","modified_gmt":"2016-11-06T08:18:15","slug":"laravel-crud-with-materializecss","status":"publish","type":"post","link":"https:\/\/myprojects.advchaweb.com\/index.php\/2016\/10\/28\/laravel-crud-with-materializecss\/","title":{"rendered":"Laravel CRUD With MaterializeCSS"},"content":{"rendered":"<p>Source: <a href=\"https:\/\/gilacoding.com\/read\/tutorial-crud-sederhana-laravel-52-dengan-materializecss-part-i\" target=\"_blank\">Tutorial CRUD Sederhana Laravel 5.2 dengan Materializecss Part I<\/a><br \/>\n&amp; <a href=\"https:\/\/gilacoding.com\/read\/tutorial-crud-sederhana-laravel-52-dengan-materializecss-part-ii\" target=\"_blank\">Tutorial CRUD Sederhana Laravel 5.2 dengan Materializecss Part II<\/a><br \/>\nMaterializeCSS source: http:\/\/materializecss.com\/getting-started.html (I don&#8217;t use sass, so download the newest version <a href=\"http:\/\/materializecss.com\/bin\/materialize-v0.97.7.zip\">http:\/\/materializecss.com\/bin\/materialize-v0.97.7.zip<\/a>)<\/p>\n<ol>\n<li>Create a new laravel project named &#8216;crud-materialize&#8217;\n<pre class=\"lang:default decode:true\">teddy@teddy-K43SJ:~\/Documents\/works\/laravel$ composer create-project --prefer-dist laravel\/laravel crud-materialize\r\nInstalling laravel\/laravel (v5.3.16)\r\n  - Installing laravel\/laravel (v5.3.16)\r\n    Loading from cache\r\n\r\nCreated project in crud-materialize\r\n&gt; php -r \"file_exists('.env') || copy('.env.example', '.env');\"\r\nLoading composer repositories with package information\r\nUpdating dependencies (including require-dev)\r\n  - Installing vlucas\/phpdotenv (v2.4.0)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/polyfill-mbstring (v1.2.0)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/var-dumper (v3.1.6)\r\n    Downloading: 100%         \r\n\r\n  - Installing symfony\/translation (v3.1.6)\r\n    Downloading: 100%         \r\n\r\n  - Installing symfony\/routing (v3.1.6)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/process (v3.1.6)\r\n    Loading from cache\r\n\r\n  - Installing psr\/log (1.0.2)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/debug (v3.1.6)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/http-foundation (v3.1.6)\r\n    Downloading: 100%         \r\n\r\n  - Installing symfony\/event-dispatcher (v3.1.6)\r\n    Downloading: 100%         \r\n\r\n  - Installing symfony\/http-kernel (v3.1.6)\r\n    Downloading: 100%         \r\n\r\n  - Installing symfony\/finder (v3.1.6)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/console (v3.1.6)\r\n    Downloading: 100%         \r\n\r\n  - Installing swiftmailer\/swiftmailer (v5.4.3)\r\n    Loading from cache\r\n\r\n  - Installing paragonie\/random_compat (v2.0.3)\r\n    Loading from cache\r\n\r\n  - Installing ramsey\/uuid (3.5.1)\r\n    Loading from cache\r\n\r\n  - Installing jakub-onderka\/php-console-color (0.1)\r\n    Loading from cache\r\n\r\n  - Installing jakub-onderka\/php-console-highlighter (v0.3.2)\r\n    Loading from cache\r\n\r\n  - Installing dnoegel\/php-xdg-base-dir (0.1)\r\n    Loading from cache\r\n\r\n  - Installing nikic\/php-parser (v2.1.1)\r\n    Loading from cache\r\n\r\n  - Installing psy\/psysh (v0.7.2)\r\n    Loading from cache\r\n\r\n  - Installing nesbot\/carbon (1.21.0)\r\n    Loading from cache\r\n\r\n  - Installing mtdowling\/cron-expression (v1.1.0)\r\n    Loading from cache\r\n\r\n  - Installing monolog\/monolog (1.21.0)\r\n    Loading from cache\r\n\r\n  - Installing league\/flysystem (1.0.32)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/polyfill-util (v1.2.0)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/polyfill-php56 (v1.2.0)\r\n    Loading from cache\r\n\r\n  - Installing jeremeamia\/superclosure (2.2.0)\r\n    Loading from cache\r\n\r\n  - Installing doctrine\/inflector (v1.1.0)\r\n    Loading from cache\r\n\r\n  - Installing classpreloader\/classpreloader (3.0.0)\r\n    Loading from cache\r\n\r\n  - Installing laravel\/framework (v5.3.21)\r\n    Downloading: 100%         \r\n\r\n  - Installing fzaninotto\/faker (v1.6.0)\r\n    Loading from cache\r\n\r\n  - Installing hamcrest\/hamcrest-php (v1.2.2)\r\n    Loading from cache\r\n\r\n  - Installing mockery\/mockery (0.9.5)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/yaml (v3.1.6)\r\n    Downloading: 100%         \r\n\r\n  - Installing sebastian\/version (2.0.0)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/resource-operations (1.0.0)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/recursion-context (1.0.2)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/object-enumerator (1.0.0)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/global-state (1.1.1)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/exporter (1.2.2)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/environment (1.3.8)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/diff (1.4.1)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/comparator (1.2.0)\r\n    Loading from cache\r\n\r\n  - Installing doctrine\/instantiator (1.0.5)\r\n    Loading from cache\r\n\r\n  - Installing phpunit\/php-text-template (1.2.1)\r\n    Loading from cache\r\n\r\n  - Installing phpunit\/phpunit-mock-objects (3.4.0)\r\n    Loading from cache\r\n\r\n  - Installing phpunit\/php-timer (1.0.8)\r\n    Loading from cache\r\n\r\n  - Installing phpunit\/php-file-iterator (1.4.1)\r\n    Loading from cache\r\n\r\n  - Installing sebastian\/code-unit-reverse-lookup (1.0.0)\r\n    Loading from cache\r\n\r\n  - Installing phpunit\/php-token-stream (1.4.8)\r\n    Loading from cache\r\n\r\n  - Installing phpunit\/php-code-coverage (4.0.1)\r\n    Loading from cache\r\n\r\n  - Installing webmozart\/assert (1.1.0)\r\n    Loading from cache\r\n\r\n  - Installing phpdocumentor\/reflection-common (1.0)\r\n    Loading from cache\r\n\r\n  - Installing phpdocumentor\/type-resolver (0.2)\r\n    Loading from cache\r\n\r\n  - Installing phpdocumentor\/reflection-docblock (3.1.1)\r\n    Loading from cache\r\n\r\n  - Installing phpspec\/prophecy (v1.6.1)\r\n    Loading from cache\r\n\r\n  - Installing myclabs\/deep-copy (1.5.4)\r\n    Loading from cache\r\n\r\n  - Installing phpunit\/phpunit (5.6.2)\r\n    Downloading: 100%         \r\n\r\n  - Installing symfony\/css-selector (v3.1.6)\r\n    Loading from cache\r\n\r\n  - Installing symfony\/dom-crawler (v3.1.6)\r\n    Downloading: 100%         \r\n\r\nsymfony\/var-dumper suggests installing ext-symfony_debug ()\r\nsymfony\/translation suggests installing symfony\/config ()\r\nsymfony\/routing suggests installing doctrine\/annotations (For using the annotation loader)\r\nsymfony\/routing suggests installing symfony\/config (For using the all-in-one router or any loader)\r\nsymfony\/routing suggests installing symfony\/dependency-injection (For loading routes from a service)\r\nsymfony\/routing suggests installing symfony\/expression-language (For using expression matching)\r\nsymfony\/event-dispatcher suggests installing symfony\/dependency-injection ()\r\nsymfony\/http-kernel suggests installing symfony\/browser-kit ()\r\nsymfony\/http-kernel suggests installing symfony\/class-loader ()\r\nsymfony\/http-kernel suggests installing symfony\/config ()\r\nsymfony\/http-kernel suggests installing symfony\/dependency-injection ()\r\nparagonie\/random_compat suggests installing ext-libsodium (Provides a modern crypto API that can be used to generate random bytes.)\r\nramsey\/uuid suggests installing ircmaxell\/random-lib (Provides RandomLib for use with the RandomLibAdapter)\r\nramsey\/uuid suggests installing ext-libsodium (Provides the PECL libsodium extension for use with the SodiumRandomGenerator)\r\nramsey\/uuid suggests installing ext-uuid (Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator)\r\nramsey\/uuid suggests installing moontoast\/math (Provides support for converting UUID to 128-bit integer (in string form).)\r\nramsey\/uuid suggests installing ramsey\/uuid-doctrine (Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type.)\r\nramsey\/uuid suggests installing ramsey\/uuid-console (A console application for generating UUIDs with ramsey\/uuid)\r\npsy\/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)\r\nmonolog\/monolog suggests installing aws\/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)\r\nmonolog\/monolog suggests installing doctrine\/couchdb (Allow sending log messages to a CouchDB server)\r\nmonolog\/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))\r\nmonolog\/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)\r\nmonolog\/monolog suggests installing graylog2\/gelf-php (Allow sending log messages to a GrayLog2 server)\r\nmonolog\/monolog suggests installing mongodb\/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)\r\nmonolog\/monolog suggests installing php-amqplib\/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)\r\nmonolog\/monolog suggests installing php-console\/php-console (Allow sending log messages to Google Chrome)\r\nmonolog\/monolog suggests installing rollbar\/rollbar (Allow sending log messages to Rollbar)\r\nmonolog\/monolog suggests installing ruflin\/elastica (Allow sending log messages to an Elastic Search server)\r\nmonolog\/monolog suggests installing sentry\/sentry (Allow sending log messages to a Sentry server)\r\nleague\/flysystem suggests installing league\/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)\r\nleague\/flysystem suggests installing league\/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)\r\nleague\/flysystem suggests installing league\/flysystem-azure (Allows you to use Windows Azure Blob storage)\r\nleague\/flysystem suggests installing league\/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)\r\nleague\/flysystem suggests installing league\/flysystem-copy (Allows you to use Copy.com storage)\r\nleague\/flysystem suggests installing league\/flysystem-dropbox (Allows you to use Dropbox storage)\r\nleague\/flysystem suggests installing league\/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)\r\nleague\/flysystem suggests installing league\/flysystem-rackspace (Allows you to use Rackspace Cloud Files)\r\nleague\/flysystem suggests installing league\/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)\r\nleague\/flysystem suggests installing league\/flysystem-webdav (Allows you to use WebDAV storage)\r\nleague\/flysystem suggests installing league\/flysystem-ziparchive (Allows you to use ZipArchive adapter)\r\nlaravel\/framework suggests installing aws\/aws-sdk-php (Required to use the SQS queue driver and SES mail driver (~3.0).)\r\nlaravel\/framework suggests installing doctrine\/dbal (Required to rename columns and drop SQLite columns (~2.4).)\r\nlaravel\/framework suggests installing guzzlehttp\/guzzle (Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).)\r\nlaravel\/framework suggests installing league\/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (~1.0).)\r\nlaravel\/framework suggests installing league\/flysystem-rackspace (Required to use the Flysystem Rackspace driver (~1.0).)\r\nlaravel\/framework suggests installing pda\/pheanstalk (Required to use the beanstalk queue driver (~3.0).)\r\nlaravel\/framework suggests installing predis\/predis (Required to use the redis cache and queue drivers (~1.0).)\r\nlaravel\/framework suggests installing pusher\/pusher-php-server (Required to use the Pusher broadcast driver (~2.0).)\r\nlaravel\/framework suggests installing symfony\/psr-http-message-bridge (Required to use psr7 bridging features (0.2.*).)\r\nsebastian\/global-state suggests installing ext-uopz (*)\r\nphpunit\/phpunit-mock-objects suggests installing ext-soap (*)\r\nphpunit\/php-code-coverage suggests installing ext-xdebug (&gt;=2.4.0)\r\nphpunit\/phpunit suggests installing phpunit\/php-invoker (~1.1)\r\nphpunit\/phpunit suggests installing ext-xdebug (*)\r\nWriting lock file\r\nGenerating autoload files\r\n&gt; Illuminate\\Foundation\\ComposerScripts::postUpdate\r\n&gt; php artisan optimize\r\nGenerating optimized class loader\r\nThe compiled class file has been removed.\r\n&gt; php artisan key:generate\r\nApplication key [base64:bcsSsz8gPXQrB5rmUX4zXCmfkbIt6QW7IFiC\/01QpRQ=] set successfully.<\/pre>\n<p>&nbsp;<\/li>\n<li>Download materialize from the above link if haven&#8217;t downloaded it. Then extract the file. Here is how the folders and files look after extracting<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/materialize.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-837\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/materialize.jpg\" alt=\"materialize\" width=\"826\" height=\"138\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/materialize.jpg 826w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/materialize-300x50.jpg 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/materialize-768x128.jpg 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a>Only 3 folders (css, fonts and js) and 2 files.<br \/>\nThen copy\/cut the above folders and file into &#8216;public&#8217; in our laravel project directory (\/crud-materialize\/public\/). It&#8217;ll merge the css and js folders.<\/li>\n<li>Go into the project directory &#8216;crud-materialize&#8217; then create a controller with name &#8216;CrudController&#8217;\n<pre class=\"lang:default decode:true\">teddy@teddy-K43SJ:~\/Documents\/works\/laravel$ cd crud-materialize\/\r\nteddy@teddy-K43SJ:~\/Documents\/works\/laravel\/crud-materialize$ php artisan make:controller CrudController --resource\r\nController created successfully.<\/pre>\n<p>We can look up the new file CrudController.php in \/app\/Http\/Controllers\/ directory.<\/li>\n<li>Modify CrudController.php then edit &#8216;index&#8217; function to call our view. It&#8217;d be like this:\n<pre class=\"lang:default decode:true \">public function index()\r\n{\r\n    return view('show');\r\n}<\/pre>\n<p>&nbsp;<\/li>\n<li>Modify \/routes\/web.php to change the default route (welcome) to call index function in CrudController:\n<pre class=\"lang:default decode:true \">\/*Route::get('\/', function () {\r\n    return view('welcome');\r\n});*\/\r\nRoute::get('\/','CrudController@index');<\/pre>\n<\/li>\n<li>It&#8217;s time to mess with the views. Create a new directory &#8216;layouts&#8217; in \/resources\/views\/. Then in it (layouts), create two blades files: index.blade.php and header.blade.php. Also create a new blade file show.blade.php in \/resources\/views\/:<br \/>\n\/resources\/views\/layouts\/index.blade.php:<\/p>\n<pre class=\"lang:default decode:true \">&lt;!DOCTYPE html&gt;\r\n&lt;html&gt;\r\n    &lt;head&gt;\r\n        &lt;title&gt;CRUD Laravel With Materializecss&lt;\/title&gt;\r\n        &lt;link rel=\"stylesheet\" href=\"{{asset('css\/materialize.min.css')}}\"&gt;\r\n        &lt;link href=\"https:\/\/fonts.googleapis.com\/icon?family=Material+Icons\" rel=\"stylesheet\"&gt;\r\n        &lt;meta content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\" name=\"viewport\"&gt;\r\n        @section('css')\r\n\r\n        @show\r\n    &lt;\/head&gt;\r\n    &lt;body&gt;\r\n        @section('header')\r\n            @include('layouts.header')\r\n        @show\r\n\r\n        &lt;div class=\"container\"&gt;\r\n            @yield('content')\r\n        &lt;\/div&gt;\r\n\r\n        &lt;script src=\"https:\/\/code.jquery.com\/jquery-2.1.1.min.js\"&gt;&lt;\/script&gt;\r\n        &lt;script src=\"{{asset('js\/materialize.min.js')}}\"&gt;&lt;\/script&gt;\r\n        &lt;script type=\"text\/javascript\"&gt;\r\n            (function($){\r\n              $(function(){\r\n\r\n                $('.button-collapse').sideNav();\r\n\r\n              }); \/\/ end of document ready\r\n            })(jQuery); \/\/ end of jQuery name space\r\n        &lt;\/script&gt;\r\n    &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>\/resources\/views\/layouts\/header.blade.php:<\/p>\n<pre class=\"lang:default decode:true \">&lt;nav class=\"pink accent-3\" role=\"navigation\"&gt;\r\n    &lt;div class=\"nav-wrapper container\"&gt;\r\n        &lt;a id=\"logo-container\" href=\"#\" class=\"brand-logo\"&gt;Laravel&lt;\/a&gt;\r\n        &lt;ul class=\"right hide-on-med-and-down\"&gt;\r\n            &lt;li&gt;&lt;a href=\"{{ url('\/')}}\"&gt;Home&lt;\/a&gt;&lt;\/li&gt;\r\n        &lt;\/ul&gt;\r\n\r\n        &lt;ul id=\"nav-mobile\" class=\"side-nav\"&gt;\r\n            &lt;li&gt;&lt;a href=\"{{ url('\/')}}\"&gt;Home&lt;\/a&gt;&lt;\/li&gt;\r\n        &lt;\/ul&gt;\r\n        &lt;a href=\"#\" data-activates=\"nav-mobile\" class=\"button-collapse\"&gt;&lt;i class=\"material-icons\"&gt;menu&lt;\/i&gt;&lt;\/a&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/nav&gt;<\/pre>\n<p>\/resources\/views\/show.blade.php:<\/p>\n<pre class=\"lang:default decode:true \">@extends('layouts.index')\r\n@section('content')\r\n\r\n&lt;div class=\"section\"&gt;\r\n    &lt;div class=\"card-panel purple darken-3 white-text\"&gt;Tutorial - CRUD Laravel With Materializecss&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"section\"&gt;\r\n    &lt;div class=\"row\"&gt;\r\n        &lt;div class=\"col s12\"&gt;\r\n            &lt;h5&gt;Here the title&lt;\/h5&gt;\r\n\r\n            &lt;div class=\"divider\"&gt;&lt;\/div&gt;\r\n            &lt;p&gt;Sriracha biodiesel taxidermy organic post-ironic, Intelligentsia salvia mustache 90's code editing brunch. Butcher polaroid VHS art party, hashtag Brooklyn deep v PBR narwhal sustainable mixtape swag wolf squid tote bag. Tote bag cronut semiotics,&lt;\/p&gt;\r\n                \r\n            &lt;button class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Readmore &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat purple darken-4 waves-effect waves-light white-text\"&gt;Edit &lt;i class=\"material-icons right\"&gt;mode_edit&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat red darken-4 waves-effect waves-light white-text\"&gt;Delete &lt;i class=\"material-icons right\"&gt;delete&lt;\/i&gt;&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n    &lt;div class=\"row\"&gt;\r\n        &lt;div class=\"col s12\"&gt;\r\n            &lt;h5&gt;Here the title&lt;\/h5&gt;\r\n\r\n            &lt;div class=\"divider\"&gt;&lt;\/div&gt;\r\n            &lt;p&gt;Sriracha biodiesel taxidermy organic post-ironic, Intelligentsia salvia mustache 90's code editing brunch. Butcher polaroid VHS art party, hashtag Brooklyn deep v PBR narwhal sustainable mixtape swag wolf squid tote bag. Tote bag cronut semiotics,&lt;\/p&gt;\r\n                \r\n            &lt;button class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Readmore &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat purple darken-4 waves-effect waves-light white-text\"&gt;Edit &lt;i class=\"material-icons right\"&gt;mode_edit&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat red darken-4 waves-effect waves-light white-text\"&gt;Delete &lt;i class=\"material-icons right\"&gt;delete&lt;\/i&gt;&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n    &lt;div class=\"row\"&gt;\r\n        &lt;div class=\"col s12\"&gt;\r\n            &lt;h5&gt;Here the title&lt;\/h5&gt;\r\n\r\n            &lt;div class=\"divider\"&gt;&lt;\/div&gt;\r\n            &lt;p&gt;Sriracha biodiesel taxidermy organic post-ironic, Intelligentsia salvia mustache 90's code editing brunch. Butcher polaroid VHS art party, hashtag Brooklyn deep v PBR narwhal sustainable mixtape swag wolf squid tote bag. Tote bag cronut semiotics,&lt;\/p&gt;\r\n                \r\n            &lt;button class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Readmore &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat purple darken-4 waves-effect waves-light white-text\"&gt;Edit &lt;i class=\"material-icons right\"&gt;mode_edit&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat red darken-4 waves-effect waves-light white-text\"&gt;Delete &lt;i class=\"material-icons right\"&gt;delete&lt;\/i&gt;&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n&lt;\/div&gt;\r\n\r\n\r\n&lt;div class=\"fixed-action-btn horizontal\" style=\"bottom: 45px; right: 24px;\"&gt;\r\n    &lt;a class=\"btn-floating btn-large red\"&gt;\r\n      &lt;i class=\"large material-icons\"&gt;add&lt;\/i&gt;\r\n    &lt;\/a&gt;\r\n  &lt;\/div&gt;\r\n\r\n\r\n@endsection<\/pre>\n<p>&nbsp;<\/li>\n<li>Turn on the server (&#8216;php artisan serve&#8217;) and see the look (http:\/\/localhost:8000\/)<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-laravel-materializecss.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-844\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-laravel-materializecss-1024x568.png\" alt=\"crud-laravel-materializecss\" width=\"840\" height=\"466\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-laravel-materializecss-1024x568.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-laravel-materializecss-300x166.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-laravel-materializecss-768x426.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-laravel-materializecss-1200x665.png 1200w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-laravel-materializecss.png 1351w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/li>\n<li>Setting database!\u00a0Modify .env file in \/crud-materialize\/ directory to set the database setting:\n<pre class=\"lang:default decode:true \">DB_CONNECTION=mysql\r\nDB_HOST=127.0.0.1\r\nDB_PORT=3306\r\nDB_DATABASE=crud-materialize\r\nDB_USERNAME=your-username\r\nDB_PASSWORD=your-password<\/pre>\n<p><del>Now we&#8217;re not going to use phpmyadmin to create the database. We&#8217;ll do it by &#8216;php artisan migrate&#8217; command<\/del> I dont know how to do it and it seems more complicated than I expected so I create the database &#8216;crud-materialize&#8217; (collation: utf8-general-ci) through phpmyadmin.<\/li>\n<li>Create a new table &#8216;crud&#8217;\n<pre class=\"lang:default decode:true \">teddy@teddy-K43SJ:~\/Documents\/works\/laravel\/crud-materialize$ php artisan make:migration create_crud_table --create=crud\r\nCreated Migration: 2016_10_29_030815_create_crud_table<\/pre>\n<p>Check \/database\/migrations\/ directory for the script to create &#8216;crud&#8217; table (2016_10_29_030815_create_crud_table.php). It&#8217;d also create two more scripts to create &#8216;users&#8217; (2014_10_12_000000_create_users_table.php) and &#8216;password_reset&#8217; table (2014_10_12_100000_create_password_resets_table.php) automatically (if they are not existed yet!). It&#8217;s safe to remove its or leave its because we only focus on the &#8216;crud&#8217; table.<\/li>\n<li>Edit 2016_10_29_030815_create_crud_table.php to add two more fields (&#8216;title&#8217; and &#8216;content&#8217;).<br \/>\nDefaultly, there are two fields available in the file, they are &#8216;id&#8217; and timestamps. Just insert the above two more fields between them<\/p>\n<pre class=\"lang:default decode:true\">public function up()\r\n{\r\n    Schema::create('crud', function (Blueprint $table) {\r\n        $table-&gt;increments('id');\r\n        $table-&gt;string('title');\r\n        $table-&gt;text('content');\r\n        $table-&gt;timestamps();\r\n    });\r\n}<\/pre>\n<\/li>\n<li>Migrate (push) the tables to our database\n<pre class=\"lang:default decode:true \">teddy@teddy-K43SJ:~\/Documents\/works\/laravel\/crud-materialize$ php artisan migrate\r\nMigration table created successfully.\r\nMigrated: 2014_10_12_000000_create_users_table\r\nMigrated: 2014_10_12_100000_create_password_resets_table\r\nMigrated: 2016_10_29_030815_create_crud_table<\/pre>\n<p>Check those tables in &#8216;crud-materialize&#8217; database.<\/li>\n<li>Create a new model &#8216;Crud&#8217;\n<pre class=\"lang:default decode:true \">teddy@teddy-K43SJ:~\/Documents\/works\/laravel\/crud-materialize$ php artisan make:model Crud\r\nModel created successfully.<\/pre>\n<p>Check a new file &#8216;Crud.php&#8217; in \/app\/ directory!<\/li>\n<li>Modify Crud.php like this:\n<pre class=\"lang:default decode:true\">class Crud extends Model\r\n{\r\n    protected $table = 'crud';\r\n    protected $primaryKey = 'id';\r\n    protected $fillable = ['title','content'];\r\n    public $timestamps = true;\r\n}<\/pre>\n<p>Then create a new data in &#8216;crud&#8217; table via phpmyadmin:<br \/>\n&#8216;title&#8217;: &#8216;Title 1&#8217;<br \/>\n&#8216;content&#8217;: &#8216;Content 1 Content 1 Content 1 Content 1 Content 1&#8217;<\/li>\n<li>Retrieve the new data through CrudController\n<pre class=\"lang:default decode:true \">...\r\nuse App\\Crud;\r\n\r\nclass CrudController extends Controller\r\n{\r\n    public function index()\r\n    {\r\n        $data=Crud::orderBy('id','DESC')-&gt;paginate(10);\r\n        \/\/return view('show');\r\n        return view('show')-&gt;with('data',$data);\r\n    }\r\n    ...\r\n}<\/pre>\n<p>We&#8217;ll throw the &#8216;data&#8217; into our view &#8216;show&#8217;.<\/li>\n<li>Modify show.blade.php in \/resources\/views\/ to get and show the data from CrudController above\n<pre class=\"lang:default decode:true \">...\r\n&lt;div class=\"section\"&gt;\r\n    @foreach($data as $d)\r\n    &lt;div class=\"row\"&gt;\r\n        &lt;div class=\"col s12\"&gt;\r\n            &lt;h5&gt;{{$d-&gt;title}}&lt;\/h5&gt;\r\n\r\n            &lt;div class=\"divider\"&gt;&lt;\/div&gt;\r\n            &lt;p&gt;{!!substr($d-&gt;content,0,100) !!}...&lt;\/p&gt;\r\n                \r\n            &lt;button class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Readmore &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat purple darken-4 waves-effect waves-light white-text\"&gt;Edit &lt;i class=\"material-icons right\"&gt;mode_edit&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;button class=\"btn btn-flat red darken-4 waves-effect waves-light white-text\"&gt;Delete &lt;i class=\"material-icons right\"&gt;delete&lt;\/i&gt;&lt;\/button&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n    @endforeach\r\n&lt;\/div&gt;\r\n...<\/pre>\n<p>We use &#8216;foreach&#8217; loop, so just use one &#8216;row&#8217; class and remove the others two.<\/li>\n<li>Test!<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-849\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-1024x349.png\" alt=\"crud-materializecss-show\" width=\"840\" height=\"286\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-1024x349.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-300x102.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-768x262.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show.png 1069w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/li>\n<li>Now we want to make the Add, Edit and Delete buttons can be functioned properly. For the Add function, modify \/app\/Http\/Controllers\/CrudController.php at &#8216;create&#8217; function to view &#8216;add&#8217;:\n<pre class=\"lang:default decode:true \">public function create()\r\n{\r\n    return view('add');\r\n}\r\n<\/pre>\n<p>Then create a new route for this in \/routes\/web.app:<\/p>\n<pre class=\"lang:default decode:true \">Route::get('\/add','CrudController@create');<\/pre>\n<p>Create a new blade file &#8216;add.blade.php&#8217; in \/resources\/views\/ to show the form:<\/p>\n<pre class=\"lang:default decode:true\">@extends('layouts.index')\r\n@section('content')\r\n\r\n&lt;div class=\"section\"&gt;\r\n    &lt;div class=\"card-panel purple darken-3 white-text\"&gt;Tutorial - CRUD Laravel With Materializecss&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"section\"&gt;\r\n  &lt;form action=\"{{ url('store') }}\" method=\"POST\"&gt;\r\n  {{ csrf_field() }}\r\n    &lt;div class=\"row\"&gt;\r\n          &lt;div class=\"input-field col s12\"&gt;\r\n            &lt;input type=\"text\" class=\"validate\" name=\"title\"&gt;\r\n            &lt;label for=\"title\"&gt;Title&lt;\/label&gt;\r\n          &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n      &lt;div class=\"row\"&gt;\r\n        &lt;div class=\"input-field col s12\"&gt;\r\n          &lt;textarea id=\"textarea1\" class=\"materialize-textarea\" name=\"content\"&gt;&lt;\/textarea&gt;\r\n          &lt;label for=\"textarea1\"&gt;Content&lt;\/label&gt;\r\n        &lt;\/div&gt;\r\n      &lt;\/div&gt;\r\n      &lt;button type=\"submit\" class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text right\"&gt;Submit &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n  &lt;\/form&gt;\r\n&lt;\/div&gt;\r\n\r\n@endsection<\/pre>\n<p>In &#8216;show.blade.php&#8217; we can add an url to &#8216;add&#8217; route when anyone click the &#8216;add&#8217; button:<\/p>\n<pre class=\"lang:default decode:true \">...\r\n&lt;div class=\"fixed-action-btn horizontal\" style=\"bottom: 45px; right: 24px;\"&gt;\r\n    &lt;a class=\"btn-floating btn-large red\" href=\"{{url('add')}}\"&gt;\r\n        &lt;i class=\"large material-icons\"&gt;add&lt;\/i&gt;\r\n    &lt;\/a&gt;\r\n&lt;\/div&gt;\r\n...<\/pre>\n<p>OK. Here is the add form when we click the add (+) button (http:\/\/localhost:8000\/add)<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-852\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add.png\" alt=\"crud-materializecss-add\" width=\"1016\" height=\"489\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add.png 1016w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-300x144.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-768x370.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a>Now we&#8217;re going to make &#8216;Submit&#8217; button work. First, add a new route for &#8216;store&#8217; in \/routes\/web.app. ATTENTION! Here we use POST (Route::post) NOT GET (Route::get):<\/p>\n<pre class=\"lang:default decode:true \">Route::post('\/store','CrudController@store');<\/pre>\n<p>Then modify &#8216;store&#8217; function in \/app\/Http\/Controllers\/CrudController.php to validate and store the form:<\/p>\n<pre class=\"lang:default decode:true \">public function store(Request $request)\r\n{\r\n    $this-&gt;validate($request, [\r\n        'title'=&gt;'required',\r\n        'content'=&gt;'required'\r\n    ]);\r\n    \r\n    $add=new Crud();\r\n    $add-&gt;title=$request['title'];\r\n    $add-&gt;content=$request['content'];\r\n    $add-&gt;save();\r\n    \r\n    return redirect()-&gt;to('\/');\r\n}<\/pre>\n<p>OK. Try to add a new data (http:\/\/localhost:8000\/add)<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-data.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-853\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-data-1024x523.png\" alt=\"crud-materializecss-add-data\" width=\"840\" height=\"429\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-data-1024x523.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-data-300x153.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-data-768x392.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-data-1200x613.png 1200w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-add-data.png 1351w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a>Here is the result<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-854\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data.png\" alt=\"crud-materializecss-show-data\" width=\"757\" height=\"539\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data.png 757w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data-300x214.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/li>\n<li>Show individual data. We want to show the data if anyone click &#8216;Readmore&#8217; button.<br \/>\nAdd a new route &#8216;read&#8217; that need &#8216;id&#8217; parameter in \/routes\/web.app:<\/p>\n<pre class=\"lang:default decode:true \">Route::get('\/read\/{id}','CrudController@show');<\/pre>\n<p>Apply the route at &#8216;Readmore&#8217; link in \/resources\/views\/show.blade.php:<\/p>\n<pre class=\"lang:default decode:true \">&lt;a href=\"{{url('read',$d-&gt;id)}}\" class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Readmore &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/a&gt;<\/pre>\n<p>Modify &#8216;show&#8217; function in \/app\/Http\/Controllers\/CrudController.php to get the data based on id and show the data by throwing it to our new view &#8216;showdata&#8217;:<\/p>\n<pre class=\"lang:default decode:true \">public function show($id)\r\n{\r\n    $show=Crud::find($id);\r\n    return view('showdata')-&gt;with('show',$show);\r\n}\r\n<\/pre>\n<p>Create a new blade file &#8216;showdata.blade.php&#8217; in \/resources\/views\/ like this:<\/p>\n<pre class=\"lang:default decode:true\">@extends('layouts.index')\r\n@section('content')\r\n\r\n&lt;div class=\"section\"&gt;\r\n    &lt;div class=\"card-panel purple darken-3 white-text\"&gt;Tutorial - CRUD Laravel With Materializecss&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"section\"&gt;\r\n    \r\n    &lt;div class=\"row\"&gt;\r\n        &lt;div class=\"col s12\"&gt;\r\n            &lt;h5&gt;{{ $show-&gt;title }}&lt;\/h5&gt;\r\n\r\n            &lt;div class=\"divider\"&gt;&lt;\/div&gt;\r\n            &lt;p&gt;{!! $show-&gt;content !!}&lt;\/p&gt;\r\n            \r\n            &lt;a href=\"{{url('\/')}}\" class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Back &lt;i class=\"material-icons right\"&gt;undo&lt;\/i&gt;&lt;\/a&gt;    \r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n\r\n&lt;\/div&gt;\r\n\r\n@endsection<\/pre>\n<p>OK. Test it by clicking &#8216;Readmore&#8217; or directly by url like http:\/\/localhost:8000\/read\/2<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data-id.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-856\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data-id-1024x431.png\" alt=\"crud-materializecss-show-data-id\" width=\"840\" height=\"354\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data-id-1024x431.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data-id-300x126.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data-id-768x323.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-show-data-id.png 1040w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a>I added a new &#8216;Back&#8217; button. please see the complete <a href=\"https:\/\/material.io\/icons\/\" target=\"_blank\">materialize icon<\/a>. Click &#8216;Back&#8217; button to redirect back to the homepage.<\/li>\n<li>Pagination. To show the pagination,\u00a0 we need to add more data. Just use &#8216;add&#8217; button. Now we want to show just two data per page. So modify &#8216;index&#8217; function in \/app\/Http\/Controllers\/CrudController.php like this:\n<pre class=\"lang:default decode:true \">public function index()\r\n{\r\n    $data=Crud::orderBy('id','DESC')-&gt;paginate(2); \/\/display 2 data per page\r\n    return view('show')-&gt;with('data',$data);\r\n}\r\n<\/pre>\n<p>To show the pagination counter and the pages, modify \/resources\/views\/show.blade.php to add &#8216;{{$data-&gt;render()}}&#8217; just before @endsection:<\/p>\n<pre class=\"lang:default decode:true \">...\r\n{{$data-&gt;render()}}\r\n@endsection<\/pre>\n<p>Here is the result (the url would be like http:\/\/localhost:8000\/?page=1):<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-pagination.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-858\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-pagination-1024x571.png\" alt=\"crud-materializecss-pagination\" width=\"840\" height=\"468\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-pagination-1024x571.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-pagination-300x167.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-pagination-768x428.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-pagination.png 1028w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/li>\n<li>Edit data.<br \/>\nCreate two new routes in \/routes\/web.php. the first to edit the data and the last to update the changes:<\/p>\n<pre class=\"lang:default decode:true \">Route::get('\/edit\/{id}','CrudController@edit');\r\nRoute::post('\/update\/{id}','CrudController@update');<\/pre>\n<p>Modify &#8216;edit&#8217; and &#8216;update&#8217; function in \/app\/Http\/Controllers\/CrudController.php:<\/p>\n<pre class=\"lang:default decode:true \">...\r\npublic function edit($id)\r\n{\r\n    \/\/$data=Crud::find($id); \/\/SAME WITH BELOW\r\n    $data=Crud::where('id',$id)-&gt;first();\r\n    return view('edit')-&gt;with('data',$data);\r\n}\r\n...\r\npublic function update(Request $request, $id)\r\n{\r\n    $update=Crud::where('id',$id)-&gt;first();\r\n    $update-&gt;title=$request['title'];\r\n    $update-&gt;content=$request['content'];\r\n    $update-&gt;update();\r\n    \r\n    return redirect()-&gt;to('\/');\r\n}\r\n...\r\n<\/pre>\n<p>Then create a new blade file &#8216;edit.blade.php&#8217; in \/resources\/views\/. this file basically same with &#8216;add.blade.php&#8217; but the form url and the input values are different:<\/p>\n<pre class=\"lang:default decode:true\">@extends('layouts.index')\r\n@section('content')\r\n\r\n&lt;div class=\"section\"&gt;\r\n    &lt;div class=\"card-panel purple darken-3 white-text\"&gt;Tutorial - CRUD Laravel With Materializecss&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n\r\n&lt;div class=\"section\"&gt;\r\n  &lt;form action=\"{{ url('update',$data-&gt;id) }}\" method=\"POST\"&gt;\r\n  {{ csrf_field() }}\r\n    &lt;div class=\"row\"&gt;\r\n          &lt;div class=\"input-field col s12\"&gt;\r\n            &lt;input type=\"text\" class=\"validate\" name=\"title\" value=\"{{$data-&gt;title}}\"&gt;\r\n            &lt;label for=\"title\"&gt;Title&lt;\/label&gt;\r\n          &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n      &lt;div class=\"row\"&gt;\r\n        &lt;div class=\"input-field col s12\"&gt;\r\n          &lt;textarea id=\"textarea1\" class=\"materialize-textarea\" name=\"content\"&gt;{{$data-&gt;content}}&lt;\/textarea&gt;\r\n          &lt;label for=\"textarea1\"&gt;Content&lt;\/label&gt;\r\n        &lt;\/div&gt;\r\n      &lt;\/div&gt;\r\n      &lt;a href=\"{{url('\/')}}\" class=\"btn btn-flat purple accent-3 waves-effect waves-light white-text\"&gt;Back &lt;i class=\"material-icons right\"&gt;undo&lt;\/i&gt;&lt;\/a&gt;\r\n      &lt;button type=\"submit\" class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text right\"&gt;Submit &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n  &lt;\/form&gt;\r\n&lt;\/div&gt;\r\n\r\n@endsection<\/pre>\n<p>Dont forget to modify &#8216;Edit&#8217; button\/link in &#8216;show.blade.php&#8217; to add the &#8216;edit&#8217; route:<\/p>\n<pre class=\"lang:default decode:true \">...\r\n&lt;a href=\"{{url('edit',$d-&gt;id)}}\" class=\"btn btn-flat purple darken-4 waves-effect waves-light white-text\"&gt;Edit &lt;i class=\"material-icons right\"&gt;mode_edit&lt;\/i&gt;&lt;\/a&gt;\r\n...<\/pre>\n<p>&nbsp;<\/li>\n<li>Delete data.<br \/>\nCreate a new route &#8216;delete&#8217; in \/routes\/web.php:<\/p>\n<pre class=\"lang:default decode:true \">Route::get('\/delete\/{id}','CrudController@destroy');<\/pre>\n<p>Then modify &#8216;destroy&#8217; function in \/app\/Http\/Controllers\/CrudController.php to delete the data:<\/p>\n<pre class=\"lang:default decode:true\">public function destroy($id)\r\n{\r\n    $delete=Crud::find($id);\r\n    $delete-&gt;delete(); \r\n    \r\n    return redirect()-&gt;to('\/');\r\n}\r\n<\/pre>\n<p>Modify &#8216;Delete&#8217; button\/link in \/resources\/views\/show.blade.php to apply the delete route and give javascript confirmation about the deletion:<\/p>\n<pre class=\"lang:default decode:true \">&lt;a href=\"{{url('delete',$d-&gt;id)}}\" onclick=\"return confirm('Are you sure to delete this data?')\" class=\"btn btn-flat red darken-4 waves-effect waves-light white-text\"&gt;Delete &lt;i class=\"material-icons right\"&gt;delete&lt;\/i&gt;&lt;\/a&gt;<\/pre>\n<p>FINISH!<br \/>\nNEXT: Add User authentication and comment section!<\/li>\n<li>User Authentication.<br \/>\nUse default scaffolding &#8216;auth&#8217;<\/p>\n<pre class=\"lang:default decode:true \">teddy@teddy-K43SJ:~\/Documents\/works\/laravel\/crud-materialize$ php artisan make:auth\r\nAuthentication scaffolding generated successfully.<\/pre>\n<p>Like I said before, it&#8217;ll create user authentication (login, register, password, etc) automatically. Please check the views in \/resources\/views\/auth\/ directory!<br \/>\nAlso check the routes in \/routes\/web.php. It&#8217;ll create two new routes:<\/p>\n<pre class=\"lang:default decode:true \">...\r\nAuth::routes();\r\n\r\nRoute::get('\/home', 'HomeController@index');<\/pre>\n<p>About this route &#8216;Auth::routes()&#8217;, from <a href=\"http:\/\/stackoverflow.com\/questions\/39196968\/laravel-5-3-new-authroutes\/39197278#39197278\" target=\"_blank\">http:\/\/stackoverflow.com\/questions\/39196968\/laravel-5-3-new-authroutes\/39197278#39197278<\/a>, it said<\/p>\n<pre class=\"lang:default decode:true \">Auth::routes() is just a helper class that helps you generate all the routes required for user authentication. You can browse the code here https:\/\/github.com\/laravel\/framework\/blob\/5.3\/src\/Illuminate\/Routing\/Router.php instead.<\/pre>\n<p>More read <a href=\"https:\/\/laracasts.com\/discuss\/channels\/laravel\/laravel-53-routing-as-authroutes?page=1\" target=\"_blank\">https:\/\/laracasts.com\/discuss\/channels\/laravel\/laravel-53-routing-as-authroutes?page=1<\/a>.<\/li>\n<li>Modify \/resources\/views\/layouts\/header.blade.php, to add new links &#8216;login&#8217; and &#8216;register&#8217;:\n<pre class=\"lang:default decode:true \">&lt;ul class=\"right hide-on-med-and-down\"&gt;\r\n    &lt;li&gt;&lt;a href=\"{{ url('\/')}}\"&gt;Home&lt;\/a&gt;&lt;\/li&gt;\r\n    @if(Route::has('login'))\r\n    &lt;li&gt;&lt;a href=\"{{ url('\/login')}}\"&gt;Login&lt;\/a&gt;&lt;\/li&gt;\r\n    &lt;li&gt;&lt;a href=\"{{ url('\/register')}}\"&gt;Register&lt;\/a&gt;&lt;\/li&gt;\r\n    @endif\r\n&lt;\/ul&gt;<\/pre>\n<p>Here is the looks<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-862\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-1024x329.png\" alt=\"crud-materializecss-auth\" width=\"840\" height=\"270\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-1024x329.png 1024w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-300x96.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-768x247.png 768w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth.png 1056w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a>Click &#8216;Login&#8217; link, it&#8217;d display the login page. But we can see the layout (header, color, etc) is different with our homepage.<\/li>\n<li>Edit \/resources\/views\/auth\/login.blade.php.<br \/>\nReplace the first line &#8216;@extends(&#8216;layouts.app&#8217;)&#8217; with &#8216;@extends(&#8216;layouts.index&#8217;)&#8217;. When we refresh our website, the header show the same layout with our homepage. But the others element are still different. &#8216;auth&#8217; scaffolding create the views based on bootstrap css but we use materialize css for homepage.<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-login.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-863\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-login.png\" alt=\"crud-materializecss-auth-login\" width=\"971\" height=\"343\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-login.png 971w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-login-300x106.png 300w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-login-768x271.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a>Modify login.blade.php to add some elements like validation, error,etc like this: NOTE: somehow {!! csrf_field() !!} DIDN&#8217;T WORK (verifycsrftoken error) SO I WRITE {{ csrf_field() }}<\/p>\n<pre class=\"lang:default decode:true\">@extends('layouts.index')\r\n\r\n@section('content')\r\n&lt;div class=\"section\"&gt;\r\n    &lt;div class=\"card-panel purple darken-3 white-text\"&gt;Tutorial - CRUD Laravel With Materializecss&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n&lt;div class=\"section\"&gt;\r\n    &lt;form id=\"formValidate\" action=\"{{ url('\/login') }}\" method=\"POST\"&gt;\r\n        {{ csrf_field() }}\r\n        &lt;div class=\"row {{ $errors-&gt;has('email') ? ' has-error' : '' }}\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;i class=\"small material-icons prefix\"&gt;email&lt;\/i&gt;\r\n                &lt;input id=\"email\" type=\"email\" class=\"validate\" name=\"email\" value=\"{{ old('email') }}\" data-error=\".errorEmail\" required&gt;\r\n                &lt;label for=\"email\"&gt;E-Mail Address&lt;\/label&gt;\r\n                &lt;div class=\"errorEmail\"&gt;\r\n                @if ($errors-&gt;has('email'))\r\n                    &lt;div class=\"error\"&gt;{{ $errors-&gt;first('email') }}&lt;\/div&gt;\r\n                @endif\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"row {{ $errors-&gt;has('password') ? ' has-error' : '' }}\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;i class=\"small material-icons prefix\"&gt;vpn_key&lt;\/i&gt;\r\n                &lt;input id=\"password\" type=\"password\" class=\"validate\" name=\"password\" data-error=\".errorPassword\" required&gt;\r\n                &lt;label for=\"password\"&gt;Password&lt;\/label&gt;\r\n                &lt;div class=\"errorPassword\"&gt;\r\n                @if ($errors-&gt;has('password'))\r\n                    &lt;div class=\"error\"&gt;{{ $errors-&gt;first('password') }}&lt;\/div&gt;\r\n                @endif\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"row\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;input id=\"remember\" type=\"checkbox\" class=\"checkbox\" name=\"remember\"&gt;\r\n                &lt;label for=\"remember\"&gt;Remember Me&lt;\/label&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"row\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;button type=\"submit\" class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Login &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n                &lt;a href=\"{{url('\/password\/reset')}}\" class=\"btn btn-flat purple accent-3 waves-effect waves-light white-text\"&gt;Forgot Your Password? &lt;i class=\"material-icons right\"&gt;help&lt;\/i&gt;&lt;\/a&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/form&gt;\r\n&lt;\/div&gt;\r\n\r\n\r\n@endsection<\/pre>\n<p>The validations need jquery-validation library, so download and put the jquery files (jquery.validate.min.js and additional-methods.min.js) in \/public\/js\/. Then link them in \/resources\/views\/layouts\/index.blade.php also write the jquery validation (here i changed the jquery to the newer version 1.11.2). Please read\u00a0<a href=\"http:\/\/demo.geekslabs.com\/materialize\/v3.1\/form-validation.html\" target=\"_blank\">Forms Validation<\/a> to learn more about the validation form for materialize css.<\/p>\n<pre class=\"lang:default decode:true \">&lt;script src=\"https:\/\/code.jquery.com\/jquery-1.11.2.min.js\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"{{asset('js\/materialize.min.js')}}\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"{{asset('js\/jquery-validation\/jquery.validate.min.js')}}\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"{{asset('js\/jquery-validation\/additional-methods.min.js')}}\"&gt;&lt;\/script&gt;\r\n&lt;script type=\"text\/javascript\"&gt;\r\n    (function($){\r\n      $(function(){\r\n\r\n        $('.button-collapse').sideNav();\r\n        \r\n        $(\"#formValidate\").validate({\r\n            rules: {\r\n                uname: {\r\n                    required: true,\r\n                    minlength: 5\r\n                },\r\n                email: {\r\n                    required: true,\r\n                    email:true\r\n                },\r\n                password: {\r\n                    required: true,\r\n                    minlength: 5\r\n                },\r\n                cpassword: {\r\n                    required: true,\r\n                    minlength: 5,\r\n                    equalTo: \"#password\"\r\n                },\r\n                curl: {\r\n                    required: true,\r\n                    url:true\r\n                },\r\n                crole:\"required\",\r\n                ccomment: {\r\n                    required: true,\r\n                    minlength: 15\r\n                },\r\n                cgender:\"required\",\r\n                cagree:\"required\",\r\n            },\r\n            \/\/For custom messages\r\n            messages: {\r\n                uname:{\r\n                    required: \"Enter a username\",\r\n                    minlength: \"Enter at least 5 characters\"\r\n                },\r\n                curl: \"Enter your website\",\r\n            },\r\n            errorElement : 'div',\r\n            errorPlacement: function(error, element) {\r\n              var placement = $(element).data('error');\r\n              if (placement) {\r\n                $(placement).append(error)\r\n              } else {\r\n                error.insertAfter(element);\r\n              }\r\n            }\r\n         });\r\n\r\n      }); \/\/ end of document ready\r\n    })(jQuery); \/\/ end of jQuery name space\r\n&lt;\/script&gt;<\/pre>\n<p>We also need to create a new css file &#8216;style.css&#8217; in \/public\/css\/ to style the error messages:<\/p>\n<pre class=\"lang:default decode:true \">.input-field div.error {\r\n    position: relative;\r\n    top: -1rem;\r\n    left: 0rem;\r\n    font-size: 0.8rem;\r\n    color: #FF4081;\r\n    margin-left: 3rem;    \r\n    -webkit-transform: translateY(0%);\r\n    -ms-transform: translateY(0%);\r\n    -o-transform: translateY(0%);\r\n    transform: translateY(0%);\r\n}<\/pre>\n<p>Don&#8217;t forget to link the css in \/resources\/views\/layouts\/index.blade.php<\/p>\n<pre class=\"lang:default decode:true \">...\r\n&lt;link rel=\"stylesheet\" href=\"{{asset('css\/materialize.min.css')}}\"&gt;\r\n&lt;link rel=\"stylesheet\" href=\"{{asset('css\/style.css')}}\"&gt;\r\n...<\/pre>\n<p>Here is the result (http:\/\/localhost:8000\/login)<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-login-error.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-871\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-login-error.png\" alt=\"crud-materializecss-login-error\" width=\"578\" height=\"482\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-login-error.png 578w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-login-error-300x250.png 300w\" sizes=\"auto, (max-width: 578px) 85vw, 578px\" \/><\/a>To find out the materialize icons, see\u00a0<a href=\"https:\/\/material.io\/icons\/\" target=\"_blank\">https:\/\/material.io\/icons\/<\/a>.\u00a0 Note: the naming for displaying the icon for materialize css is pretty tricky. For example to show icon for name\/username like &#8216;account box&#8217;, we have to write it with underscore (_). so it should be &#8216;account_box&#8217;:<\/p>\n<pre class=\"lang:default decode:true \">&lt;i class=\"small material-icons prefix\"&gt;account_box&lt;\/i&gt;<\/pre>\n<p>&nbsp;<\/li>\n<li>Do the same for &#8216;Register&#8217; link.<br \/>\nHere is the modification for \/resources\/views\/auth\/register.blade.php<\/p>\n<pre class=\"lang:default decode:true \">@extends('layouts.index')\r\n\r\n@section('content')\r\n&lt;div class=\"section\"&gt;\r\n    &lt;div class=\"card-panel purple darken-3 white-text\"&gt;Register&lt;\/div&gt;\r\n&lt;\/div&gt;\r\n&lt;div class=\"section\"&gt;\r\n    &lt;form id=\"formValidate\" action=\"{{ url('\/register') }}\" method=\"POST\"&gt;\r\n        {{ csrf_field() }}\r\n        &lt;div class=\"row {{ $errors-&gt;has('name') ? ' has-error' : '' }}\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;i class=\"small material-icons prefix\"&gt;account_box&lt;\/i&gt;\r\n                &lt;input id=\"name\" type=\"text\" class=\"validate\" name=\"name\" value=\"{{ old('name') }}\" data-error=\".errorName\" required&gt;\r\n                &lt;label for=\"name\"&gt;Name&lt;\/label&gt;\r\n                &lt;div class=\"errorName\"&gt;\r\n                @if ($errors-&gt;has('name'))\r\n                    &lt;div class=\"error\"&gt;{{ $errors-&gt;first('name') }}&lt;\/div&gt;\r\n                @endif\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"row {{ $errors-&gt;has('email') ? ' has-error' : '' }}\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;i class=\"small material-icons prefix\"&gt;email&lt;\/i&gt;\r\n                &lt;input id=\"email\" type=\"email\" class=\"validate\" name=\"email\" value=\"{{ old('email') }}\" data-error=\".errorEmail\" required&gt;\r\n                &lt;label for=\"email\"&gt;E-Mail Address&lt;\/label&gt;\r\n                &lt;div class=\"errorEmail\"&gt;\r\n                @if ($errors-&gt;has('email'))\r\n                    &lt;div class=\"error\"&gt;{{ $errors-&gt;first('email') }}&lt;\/div&gt;\r\n                @endif\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"row {{ $errors-&gt;has('password') ? ' has-error' : '' }}\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;i class=\"small material-icons prefix\"&gt;lock_outline&lt;\/i&gt;\r\n                &lt;input id=\"password\" type=\"password\" class=\"validate\" name=\"password\" data-error=\".errorPassword\" required&gt;\r\n                &lt;label for=\"password\"&gt;Password&lt;\/label&gt;\r\n                &lt;div class=\"errorPassword\"&gt;\r\n                @if ($errors-&gt;has('password'))\r\n                    &lt;div class=\"error\"&gt;{{ $errors-&gt;first('password') }}&lt;\/div&gt;\r\n                @endif\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"row\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;i class=\"small material-icons prefix\"&gt;lock_outline&lt;\/i&gt;\r\n                &lt;input id=\"password-confirm\" type=\"password\" class=\"validate\" name=\"password_confirmation\" data-error=\".errorPasswordConfirmation\" required&gt;\r\n                &lt;label for=\"password\"&gt;Confirm Password&lt;\/label&gt;\r\n                &lt;div class=\"errorPasswordConfirmation\"&gt;\r\n                &lt;\/div&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"row\"&gt;\r\n            &lt;div class=\"input-field col s6 push-s3\"&gt;\r\n                &lt;button type=\"submit\" class=\"btn btn-flat pink accent-3 waves-effect waves-light white-text\"&gt;Register &lt;i class=\"material-icons right\"&gt;send&lt;\/i&gt;&lt;\/button&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/form&gt;\r\n&lt;\/div&gt;\r\n@endsection<\/pre>\n<p>Here is the looks<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-reg.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-875\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-reg.png\" alt=\"crud-materializecss-auth-reg\" width=\"735\" height=\"590\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-reg.png 735w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-auth-reg-300x241.png 300w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a>We need to modify a few things like the page redirection after the log in and the register. I also notice the dropdown menu to show the logged in user still not correct. For modifying the redirection page, it&#8217;s simple. Modify the controllers (LoginController.php and RegisterController.php) in \/app\/Http\/Controllers\/Auth\/ directory. Set $redirectTo variable to the homepage (&#8216;\/&#8217;) instead of &#8216;\/home&#8217; like this:<\/p>\n<pre class=\"lang:default decode:true \">\/\/protected $redirectTo = '\/home';\r\nprotected $redirectTo = '\/';<\/pre>\n<p>Then for the dropdown menu, we need to modify \/resources\/views\/layouts\/header.blade.php like this:<\/p>\n<pre class=\"lang:default decode:true\">&lt;nav class=\"pink accent-3\" role=\"navigation\"&gt;\r\n    &lt;div class=\"nav-wrapper container\"&gt;\r\n        &lt;div class=\"col s12\"&gt;\r\n        &lt;a id=\"logo-container\" href=\"#\" class=\"brand-logo\"&gt;Laravel&lt;\/a&gt;\r\n        &lt;ul class=\"right hide-on-med-and-down\"&gt;\r\n            &lt;li&gt;&lt;a href=\"{{ url('\/')}}\"&gt;Home&lt;\/a&gt;&lt;\/li&gt;\r\n            &lt;!-- Authentication Links --&gt;\r\n            @if (Auth::guest())\r\n                &lt;li&gt;&lt;a href=\"{{ url('\/login') }}\"&gt;Login&lt;\/a&gt;&lt;\/li&gt;\r\n                &lt;li&gt;&lt;a href=\"{{ url('\/register') }}\"&gt;Register&lt;\/a&gt;&lt;\/li&gt;\r\n            @else\r\n                &lt;li&gt;\r\n                    &lt;a href=\"#\" class=\"dropdown-button\" data-beloworigin=\"true\" data-activates=\"dropdown1\"&gt;\r\n                        {{ Auth::user()-&gt;name }} &lt;i class=\"small material-icons prefix right\"&gt;arrow_drop_down&lt;\/i&gt;\r\n                    &lt;\/a&gt;\r\n\r\n                    &lt;ul id=\"dropdown1\" class=\"dropdown-content pink accent-3\"&gt;\r\n                        &lt;li&gt;\r\n                            &lt;a href=\"{{ url('\/logout') }}\"\r\n                                onclick=\"event.preventDefault();\r\n                                         document.getElementById('logout-form').submit();\"&gt;\r\n                                Logout\r\n                            &lt;\/a&gt;\r\n\r\n                            &lt;form id=\"logout-form\" action=\"{{ url('\/logout') }}\" method=\"POST\" style=\"display: none;\"&gt;\r\n                                {{ csrf_field() }}\r\n                            &lt;\/form&gt;\r\n                        &lt;\/li&gt;\r\n                    &lt;\/ul&gt;\r\n                &lt;\/li&gt;\r\n            @endif\r\n        &lt;\/ul&gt;\r\n\r\n        &lt;ul id=\"nav-mobile\" class=\"side-nav\"&gt;\r\n            &lt;li&gt;&lt;a href=\"{{ url('\/')}}\"&gt;Home&lt;\/a&gt;&lt;\/li&gt;\r\n        &lt;\/ul&gt;\r\n        &lt;a href=\"#\" data-activates=\"nav-mobile\" class=\"button-collapse\"&gt;&lt;i class=\"material-icons\"&gt;menu&lt;\/i&gt;&lt;\/a&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/nav&gt;<\/pre>\n<p>To find out the complete dropdown function for materialized css, please see <a href=\"http:\/\/materializecss.com\/dropdown.html\" target=\"_blank\">http:\/\/materializecss.com\/dropdown.html<\/a> and <a href=\"http:\/\/demo.geekslabs.com\/materialize\/v3.1\/ui-navbar.html\" target=\"_blank\">http:\/\/demo.geekslabs.com\/materialize\/v3.1\/ui-navbar.html<\/a>.<br \/>\nI also need to make a slightly modification in \/public\/css\/style.css to make the dropdown display the correct font color:<\/p>\n<pre class=\"lang:default decode:true \">.dropdown-content li&gt;a, .dropdown-content li&gt;span {\r\n    color: #ffffff;\r\n}<\/pre>\n<p>Here is the looks:<a href=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-dropdown.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-877\" src=\"http:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-dropdown.png\" alt=\"crud-materializecss-dropdown\" width=\"443\" height=\"211\" srcset=\"https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-dropdown.png 443w, https:\/\/myprojects.advchaweb.com\/wp-content\/uploads\/2016\/10\/crud-materializecss-dropdown-300x143.png 300w\" sizes=\"auto, (max-width: 443px) 85vw, 443px\" \/><\/a><\/li>\n<li>Now, we want to restrict some functions like &#8216;Add&#8217;, &#8216;Edit&#8217; and &#8216;Delete&#8217; can only be proceeded when the user is logged in. So we&#8217;re going to check the logged in user (&#8216;Auth::check()&#8217;) in \/app\/Http\/Controllers\/CrudController.php for some functions &#8216;create&#8217;, &#8216;edit&#8217; and &#8216;destroy&#8217; like this: (ref:\u00a0<a href=\"https:\/\/laravel.com\/docs\/5.3\/authentication\" target=\"_blank\">Authentication<\/a> and <a href=\"http:\/\/laravel.io\/forum\/11-24-2015-check-if-user-is-logged-in\" target=\"_blank\">Check if user is logged in<\/a>):\n<pre class=\"lang:default decode:true \">...\r\npublic function create()\r\n{\r\n    if(Auth::check()){\r\n        return view('add');\r\n    }else{\r\n        return redirect()-&gt;to('\/login');\r\n    }\r\n}\r\n...\r\npublic function edit($id)\r\n{\r\n    if(Auth::check()){\r\n        \/\/$data=Crud::find($id); \/\/SAME WITH BELOW\r\n        $data=Crud::where('id',$id)-&gt;first();\r\n        return view('edit')-&gt;with('data',$data);\r\n    }else{\r\n        return redirect()-&gt;to('\/login');\r\n    }\r\n}\r\n...\r\npublic function destroy($id)\r\n{\r\n    if(Auth::check()){\r\n        $delete=Crud::find($id);\r\n        $delete-&gt;delete(); \r\n        \r\n        return redirect()-&gt;to('\/');\r\n    }else{\r\n        return redirect()-&gt;to('\/login');\r\n    }\r\n}\r\n<\/pre>\n<p>OK. When we click the Add, edit and delete icon\/buttons, it&#8217;d redirect us to the login page if we haven&#8217;t logged in!<br \/>\nNEXT: User access\/level, go to \/ proceed to the aim page after logging in, admin panel and comments!<\/li>\n<li><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Source: Tutorial CRUD Sederhana Laravel 5.2 dengan Materializecss Part I &amp; Tutorial CRUD Sederhana Laravel 5.2 dengan Materializecss Part II MaterializeCSS source: http:\/\/materializecss.com\/getting-started.html (I don&#8217;t use sass, so download the newest version http:\/\/materializecss.com\/bin\/materialize-v0.97.7.zip) Create a new laravel project named &#8216;crud-materialize&#8217; teddy@teddy-K43SJ:~\/Documents\/works\/laravel$ composer create-project &#8211;prefer-dist laravel\/laravel crud-materialize Installing laravel\/laravel (v5.3.16) &#8211; Installing laravel\/laravel (v5.3.16) Loading from &hellip; <a href=\"https:\/\/myprojects.advchaweb.com\/index.php\/2016\/10\/28\/laravel-crud-with-materializecss\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Laravel CRUD With MaterializeCSS&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,13],"tags":[],"class_list":["post-832","post","type-post","status-publish","format-standard","hentry","category-laravel","category-tutorial"],"_links":{"self":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts\/832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/comments?post=832"}],"version-history":[{"count":27,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts\/832\/revisions"}],"predecessor-version":[{"id":910,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/posts\/832\/revisions\/910"}],"wp:attachment":[{"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/media?parent=832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/categories?post=832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/myprojects.advchaweb.com\/index.php\/wp-json\/wp\/v2\/tags?post=832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}