{"id":143,"date":"2025-08-16T08:33:44","date_gmt":"2025-08-16T08:33:44","guid":{"rendered":"https:\/\/iotnoob.com\/wordpress\/?p=143"},"modified":"2025-08-19T07:30:42","modified_gmt":"2025-08-19T07:30:42","slug":"new-laravel-project-laravel-mix","status":"publish","type":"post","link":"https:\/\/iotnoob.com\/wordpress\/2025\/08\/16\/new-laravel-project-laravel-mix\/","title":{"rendered":"New Laravel Project &amp; Laravel Mix"},"content":{"rendered":"\n<h5 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Laravel (v.8) + install stater tool<\/mark> &#8211; *** TEST \u0e2b\u0e25\u0e32\u0e22\u0e23\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27 \u0e27\u0e48\u0e32 OKAY ***<\/h5>\n\n\n\n<h5 class=\"wp-block-heading\">-&gt; \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Laravel \u0e14\u0e49\u0e27\u0e22 composer &#8211; \u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e1b\u0e23\u0e40\u0e08\u0e47\u0e15\u0e15\u0e4c \u0e0a\u0e37\u0e48\u0e2d laravel-test-app<\/h5>\n\n\n\n<p>\u0e15\u0e2d\u0e19\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 \u0e40\u0e02\u0e49\u0e32\u0e43\u0e08\u0e27\u0e48\u0e32 composer \u0e21\u0e31\u0e19\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e48\u0e2d\u0e19\u0e41\u0e25\u0e49\u0e27\u0e27\u0e48\u0e32\u0e40\u0e23\u0e32\u0e21\u0e35 php version \u0e2d\u0e30\u0e44\u0e23\u0e2d\u0e22\u0e39\u0e48\u0e43\u0e19 path \u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32 \u0e16\u0e49\u0e32\u0e40\u0e08\u0e2d version \u0e40\u0e01\u0e48\u0e32\u0e46\u0e2b\u0e19\u0e48\u0e2d\u0e22 \u0e21\u0e31\u0e19\u0e08\u0e30\u0e44\u0e21\u0e48\u0e40\u0e2d\u0e32 Laravel v.10 v.11 \u0e21\u0e32\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e32\u0e40\u0e25\u0e22 (\u0e21\u0e31\u0e49\u0e07) &#8211; \u0e08\u0e19\u0e16\u0e36\u0e07\u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e40\u0e25\u0e22\u0e22\u0e31\u0e07\u0e44\u0e14\u0e49\u0e43\u0e0a\u0e49\u0e41\u0e15\u0e48 v.8 \u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">composer create-project --prefer-dist laravel\/laravel laravel-test-app\ncd laravel-test-app<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"996\" height=\"162\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-43.png\" alt=\"\" class=\"wp-image-209\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-43.png 996w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-43-300x49.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-43-768x125.png 768w\" sizes=\"auto, (max-width: 996px) 100vw, 996px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"713\" height=\"766\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-44.png\" alt=\"\" class=\"wp-image-210\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-44.png 713w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-44-279x300.png 279w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"835\" height=\"445\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-45.png\" alt=\"\" class=\"wp-image-211\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-45.png 835w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-45-300x160.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-45-768x409.png 768w\" sizes=\"auto, (max-width: 835px) 100vw, 835px\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">-&gt; \u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Bootstrap UI \/ Bootstrap UI auth<\/h5>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">1.  **\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 `laravel\/ui`:**\ncomposer require laravel\/ui\n2.  **\u0e2a\u0e23\u0e49\u0e32\u0e07 Bootstrap Scaffolding:**\nphp artisan ui bootstrap --auth\n* `--auth` \u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e23\u0e30\u0e1a\u0e1a login\/register \u0e43\u0e2b\u0e49\u0e14\u0e49\u0e27\u0e22 \u0e0b\u0e36\u0e48\u0e07\u0e2a\u0e30\u0e14\u0e27\u0e01\u0e15\u0e48\u0e2d\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\n3.  **\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Dependencies \u0e1d\u0e31\u0e48\u0e07 Frontend:**\nnpm install\n4.  **\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c Assets:**\nnpm run dev<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"628\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-48.png\" alt=\"\" class=\"wp-image-214\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-48.png 912w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-48-300x207.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-48-768x529.png 768w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"654\" height=\"103\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-49.png\" alt=\"\" class=\"wp-image-215\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-49.png 654w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-49-300x47.png 300w\" sizes=\"auto, (max-width: 654px) 100vw, 654px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"719\" height=\"428\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-50.png\" alt=\"\" class=\"wp-image-216\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-50.png 719w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-50-300x179.png 300w\" sizes=\"auto, (max-width: 719px) 100vw, 719px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"729\" height=\"259\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-51.png\" alt=\"\" class=\"wp-image-217\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-51.png 729w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-51-300x107.png 300w\" sizes=\"auto, (max-width: 729px) 100vw, 729px\" \/><\/figure>\n\n\n\n<p>run Mix \u0e2d\u0e35\u0e01\u0e23\u0e2d\u0e1a<\/p>\n\n\n\n<p>\u0e04\u0e23\u0e32\u0e27\u0e19\u0e35\u0e49 Warning \u0e40\u0e22\u0e2d\u0e30\u0e41\u0e22\u0e30 \u0e41\u0e15\u0e48\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e08\u0e30\u0e44\u0e21\u0e48\u0e21\u0e35\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e2d\u0e30\u0e44\u0e23<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"393\" height=\"133\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-52.png\" alt=\"\" class=\"wp-image-218\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-52.png 393w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-52-300x102.png 300w\" sizes=\"auto, (max-width: 393px) 100vw, 393px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"263\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-53-1024x263.png\" alt=\"\" class=\"wp-image-219\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-53-1024x263.png 1024w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-53-300x77.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-53-768x197.png 768w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-53.png 1098w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1005\" height=\"668\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-55.png\" alt=\"\" class=\"wp-image-223\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-55.png 1005w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-55-300x199.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-55-768x510.png 768w\" sizes=\"auto, (max-width: 1005px) 100vw, 1005px\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">-&gt; \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 debug bar \/ sweetalert2 \/ axios (\u0e1b\u0e23\u0e01\u0e15\u0e34\u0e21\u0e35\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27) \/ tabulator \/ lightbox2 \/<\/h5>\n\n\n\n<p>axios \u0e44\u0e14\u0e49\u0e21\u0e32\u0e41\u0e25\u0e49\u0e27 \u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e25\u0e07\u0e40\u0e1e\u0e34\u0e48\u0e21<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"504\" height=\"482\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-54.png\" alt=\"\" class=\"wp-image-221\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-54.png 504w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-54-300x287.png 300w\" sizes=\"auto, (max-width: 504px) 100vw, 504px\" \/><\/figure>\n\n\n\n<p>\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 debugbar <\/p>\n\n\n\n<p>composer require barryvdh\/laravel-debugbar &#8211;dev<\/p>\n\n\n\n<p>\u0e16\u0e49\u0e32\u0e25\u0e37\u0e21\u0e43\u0e2a\u0e48 &#8211;dev \u0e21\u0e31\u0e19\u0e08\u0e30\u0e16\u0e32\u0e21\u0e40\u0e23\u0e32\u0e2d\u0e35\u0e01\u0e23\u0e2d\u0e1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"707\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-56-1024x707.png\" alt=\"\" class=\"wp-image-224\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-56-1024x707.png 1024w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-56-300x207.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-56-768x530.png 768w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-56.png 1037w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1008\" height=\"585\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-58.png\" alt=\"\" class=\"wp-image-226\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-58.png 1008w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-58-300x174.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-58-768x446.png 768w\" sizes=\"auto, (max-width: 1008px) 100vw, 1008px\" \/><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u0e43\u0e0a\u0e49 npm \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 JavaScript libraries\n\nnpm install tabulator-tables sweetalert2 lightbox2<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"552\" height=\"285\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-59.png\" alt=\"\" class=\"wp-image-227\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-59.png 552w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-59-300x155.png 300w\" sizes=\"auto, (max-width: 552px) 100vw, 552px\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">-&gt; \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 special library \u0e40\u0e0a\u0e48\u0e19 phpoffice-phpspreadsheet \/ chart.js<\/h5>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u0e43\u0e0a\u0e49 Composer \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 library \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e1f\u0e25\u0e4c Excel\n\ncomposer require phpoffice\/phpspreadsheet \nnpm install chart.js<\/pre>\n\n\n\n<p>\u0e43\u0e0a\u0e49 composer require &#8211; \u0e40\u0e1e\u0e23\u0e32\u0e30 Library \u0e15\u0e31\u0e27\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19 PHP &#8211; \u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Backend<\/p>\n\n\n\n<p>\u0e43\u0e0a\u0e49 npm &#8211; \u0e40\u0e1e\u0e23\u0e32\u0e30 Library \u0e15\u0e31\u0e27\u0e19\u0e35\u0e49\u0e40\u0e1b\u0e47\u0e19 Javascript &#8211; \u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49\u0e17\u0e33\u0e07\u0e32\u0e19 Frontend<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1009\" height=\"698\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-60.png\" alt=\"\" class=\"wp-image-228\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-60.png 1009w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-60-300x208.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-60-768x531.png 768w\" sizes=\"auto, (max-width: 1009px) 100vw, 1009px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"561\" height=\"293\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-61.png\" alt=\"\" class=\"wp-image-229\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-61.png 561w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-61-300x157.png 300w\" sizes=\"auto, (max-width: 561px) 100vw, 561px\" \/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">-&gt; compile using mix<\/h5>\n\n\n\n<p>\u0e01\u0e48\u0e2d\u0e19 compile \u0e01\u0e47\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e35\u0e22\u0e01 Library \u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e21\u0e32\u0e01\u0e48\u0e2d\u0e19 \u0e41\u0e25\u0e49\u0e27\u0e04\u0e48\u0e2d\u0e22 compile \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e23\u0e49\u0e32\u0e07 public app.js &amp; app.css<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"657\" height=\"284\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-62.png\" alt=\"\" class=\"wp-image-231\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-62.png 657w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-62-300x130.png 300w\" sizes=\"auto, (max-width: 657px) 100vw, 657px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"737\" height=\"839\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-66.png\" alt=\"\" class=\"wp-image-236\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-66.png 737w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-66-264x300.png 264w\" sizes=\"auto, (max-width: 737px) 100vw, 737px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"259\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-64-1024x259.png\" alt=\"\" class=\"wp-image-234\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-64-1024x259.png 1024w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-64-300x76.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-64-768x194.png 768w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-64.png 1098w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u0e01\u0e32\u0e23 add code javascript \u0e25\u0e07\u0e44\u0e1b\u0e17\u0e35\u0e48 resource app.js<\/p>\n\n\n\n<p>\u0e1e\u0e2d\u0e40\u0e23\u0e32 run mix \u0e40\u0e1e\u0e37\u0e48\u0e2d compile \u0e21\u0e31\u0e19\u0e01\u0e47\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e0b\u0e48\u0e2d\u0e19 code \u0e02\u0e2d\u0e07\u0e40\u0e23\u0e32\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e43\u0e19\u0e15\u0e31\u0e27<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">-&gt; test page<\/h5>\n\n\n\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07 controller<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">    **\u0e2a\u0e23\u0e49\u0e32\u0e07 Controller:**\n    \u0e23\u0e31\u0e19\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07 Artisan \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e2a\u0e23\u0e49\u0e32\u0e07 Controller \u0e43\u0e2b\u0e21\u0e48\u0e0a\u0e37\u0e48\u0e2d `TestPageController`\n\n    php artisan make:controller TestPageController<\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"453\" height=\"56\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-65.png\" alt=\"\" class=\"wp-image-235\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-65.png 453w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-65-300x37.png 300w\" sizes=\"auto, (max-width: 453px) 100vw, 453px\" \/><\/figure>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">        \/\/ \u0e41\u0e2a\u0e14\u0e07\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e2b\u0e25\u0e31\u0e01\n        public function index()\n        {\n            $sampleData = [\n                ['id' => 1, 'name' => 'Oli Bob', 'location' => 'United Kingdom', 'gender' => 'male', 'rating' => 1, 'col' => 'red'],\n                ['id' => 2, 'name' => 'Mary May', 'location' => 'Germany', 'gender' => 'female', 'rating' => 2, 'col' => 'blue'],\n                ['id' => 3, 'name' => 'Christine Lobowski', 'location' => 'France', 'gender' => 'female', 'rating' => 0, 'col' => 'green'],\n                ['id' => 4, 'name' => 'Brendon Philips', 'location' => 'USA', 'gender' => 'male', 'rating' => 1, 'col' => 'orange'],\n            ];\n\n            return view('testpage', ['tableData' => json_encode($sampleData)]);\n        }<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">        \/\/ \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a Export Excel\n\n        use PhpOffice\\PhpSpreadsheet\\Spreadsheet;\n        use PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx;\n\n        public function export()\n        {\n            $spreadsheet = new Spreadsheet();\n            $sheet = $spreadsheet->getActiveSheet();\n            $sheet->setCellValue('A1', 'Hello World !');\n\n            $writer = new Xlsx($spreadsheet);\n\n            \/\/ \u0e40\u0e15\u0e23\u0e35\u0e22\u0e21 Header \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14\n            $fileName = 'hello_world.xlsx';\n            header('Content-Type: application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n            header('Content-Disposition: attachment; filename=\"'. $fileName .'\"');\n            header('Cache-Control: max-age=0');\n\n            $writer->save('php:\/\/output');\n        }<\/pre>\n\n\n\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07 view<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">resources\/views\/testpage.blade.php\n\n&lt;!DOCTYPE html>\n&lt;html lang=\"en\">\n&lt;head>\n    &lt;meta charset=\"UTF-8\">\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    &lt;title>Laravel Test Page&lt;\/title>\n    &lt;link href=\"{{ asset('css\/app.css') }}\" rel=\"stylesheet\">\n&lt;\/head>\n&lt;body>\n    &lt;div class=\"container mt-5\">\n        &lt;h1 class=\"mb-4\">\ud83d\ude80 \u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Packages&lt;\/h1>\n\n        &lt;div class=\"alert alert-primary\" role=\"alert\">\n            &lt;b>Bootstrap 5:&lt;\/b> \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e2a\u0e21\u0e1a\u0e39\u0e23\u0e13\u0e4c! \u0e19\u0e35\u0e48\u0e04\u0e37\u0e2d\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07 Alert Component.\n        &lt;\/div>\n\n        &lt;div class=\"mb-4\">\n            &lt;button id=\"sweetalert-btn\" class=\"btn btn-success\">\n                &lt;b>SweetAlert2:&lt;\/b> \u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e17\u0e14\u0e2a\u0e2d\u0e1a\n            &lt;\/button>\n        &lt;\/div>\n\n        &lt;div class=\"mb-4\">\n                &lt;a href=\"{{ route('export.excel') }}\" class=\"btn btn-info\">\n                &lt;b>PhpSpreadsheet:&lt;\/b> \u0e04\u0e25\u0e34\u0e01\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 Excel\n            &lt;\/a>\n        &lt;\/div>\n\n        &lt;div class=\"card mb-4\">\n            &lt;div class=\"card-header\">\n                &lt;b>Tabulator:&lt;\/b> \u0e15\u0e32\u0e23\u0e32\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e19\u0e35\u0e49\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e42\u0e14\u0e22 Tabulator\n            &lt;\/div>\n            &lt;div class=\"card-body\">\n                &lt;div id=\"example-table\" data-tabledata=\"{{ $tableData }}\">&lt;\/div>\n            &lt;\/div>\n        &lt;\/div>\n\n        &lt;div class=\"card\">\n            &lt;div class=\"card-header\">\n                &lt;b>Lightbox2:&lt;\/b> \u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e23\u0e39\u0e1b\u0e20\u0e32\u0e1e\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39\u0e02\u0e19\u0e32\u0e14\u0e40\u0e15\u0e47\u0e21\n            &lt;\/div>\n            &lt;div class=\"card-body\">\n                &lt;div class=\"row\">\n                    &lt;div class=\"col-md-3\">\n                        &lt;a href=\"{{ asset('images\/full1.jpg') }}\" data-lightbox=\"gallery\" data-title=\"Image 1\">\n                            &lt;img src=\"{{ asset('images\/thumb1.jpg') }}\" class=\"img-thumbnail\">\n                        &lt;\/a>\n                    &lt;\/div>\n                    &lt;div class=\"col-md-3\">\n                        &lt;a href=\"{{ asset('images\/full2.jpg') }}\" data-lightbox=\"gallery\" data-title=\"Image 2\">\n                            &lt;img src=\"{{ asset('images\/thumb2.jpg') }}\" class=\"img-thumbnail\">\n                        &lt;\/a>\n                    &lt;\/div>\n                &lt;\/div>\n            &lt;\/div>\n        &lt;\/div>\n\n    &lt;\/div>\n    &lt;script src=\"{{ asset('js\/app.js') }}\">&lt;\/script>\n    \n&lt;\/body>\n&lt;\/html><\/pre>\n\n\n\n<p>\u0e01\u0e32\u0e23\u0e2a\u0e23\u0e49\u0e32\u0e07 table data \u0e08\u0e30\u0e14\u0e39\u0e22\u0e32\u0e01\u0e2b\u0e19\u0e48\u0e2d\u0e22 &#8211; Controller Test Page \u0e08\u0e30\u0e2a\u0e23\u0e49\u0e32\u0e07 Data \u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 (manual \u0e2b\u0e23\u0e37\u0e2d \u0e08\u0e32\u0e01 DB) \u0e41\u0e25\u0e49\u0e27\u0e2a\u0e48\u0e07\u0e21\u0e32\u0e43\u0e2b\u0e49 VIEW &#8211; \u0e43\u0e19\u0e2a\u0e48\u0e27\u0e19 VIEW \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e44\u0e14\u0e49\u0e41\u0e25\u0e49\u0e27 \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25 \u0e41\u0e15\u0e48\u0e2b\u0e21\u0e01 Data \u0e44\u0e27\u0e49\u0e43\u0e19 attribute \u0e0b\u0e31\u0e01\u0e17\u0e35\u0e48\u0e2b\u0e19\u0e36\u0e48\u0e07 &#8211; \u0e17\u0e35\u0e19\u0e35\u0e49 \u0e40\u0e23\u0e32\u0e01\u0e47\u0e40\u0e02\u0e35\u0e22\u0e19 Javascript \u0e17\u0e35\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19 \u0e15\u0e2d\u0e19 DomContentLoaded \u0e0b\u0e36\u0e48\u0e07\u0e01\u0e47\u0e04\u0e37\u0e2d\u0e42\u0e2b\u0e25\u0e14\u0e2b\u0e19\u0e49\u0e32\u0e15\u0e32 component \u0e21\u0e32\u0e2b\u0e21\u0e14\u0e41\u0e25\u0e49\u0e27 \u0e42\u0e14\u0e22 JS \u0e08\u0e30\u0e04\u0e49\u0e19\u0e2b\u0e32 Div \u0e17\u0e35\u0e48\u0e08\u0e30\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25, \u0e04\u0e49\u0e32\u0e2b\u0e32 Data \u0e17\u0e35\u0e48\u0e2b\u0e21\u0e01\u0e40\u0e2d\u0e32\u0e44\u0e27\u0e49, \u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e2a\u0e23\u0e49\u0e32\u0e07 Tabulator table \u0e43\u0e2a\u0e48 column definition &#8211; \u0e41\u0e1b\u0e30 Data \u0e41\u0e25\u0e49\u0e27 \u0e21\u0e31\u0e19\u0e01\u0e47\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25\u0e43\u0e19 Div \u0e19\u0e31\u0e49\u0e19<\/p>\n\n\n\n<p>\u0e41\u0e15\u0e48\u0e1e\u0e2d\u0e14\u0e35 Javascript \u0e19\u0e35\u0e49 \u0e40\u0e23\u0e32\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e43\u0e19 app.js \u0e41\u0e25\u0e49\u0e27 compile \u0e44\u0e1b\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e41\u0e23\u0e01<\/p>\n\n\n\n<p>\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 compile \u0e40\u0e23\u0e32\u0e01\u0e47\u0e40\u0e2d\u0e32\u0e21\u0e31\u0e19\u0e21\u0e32 attached \u0e14\u0e49\u0e27\u0e22 asset(&#8216;app.js&#8217;)<\/p>\n\n\n\n<p>\u0e40\u0e1e\u0e34\u0e48\u0e21 route<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">    use App\\Http\\Controllers\\TestPageController;\n\n    Route::get('\/test-page', [TestPageController::class, 'index'])->name('test.page');\n    Route::get('\/export-excel', [TestPageController::class, 'export'])->name('export.excel');<\/pre>\n\n\n\n<p>run serve<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"500\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-67-1024x500.png\" alt=\"\" class=\"wp-image-238\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-67-1024x500.png 1024w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-67-300x146.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-67-768x375.png 768w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-67.png 1197w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"843\" height=\"477\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-68.png\" alt=\"\" class=\"wp-image-239\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-68.png 843w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-68-300x170.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-68-768x435.png 768w\" sizes=\"auto, (max-width: 843px) 100vw, 843px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"460\" height=\"162\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-69.png\" alt=\"\" class=\"wp-image-241\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-69.png 460w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-69-300x106.png 300w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/figure>\n\n\n\n<p>\u0e08\u0e30\u0e43\u0e0a\u0e49 lightbox2 \u0e15\u0e49\u0e2d\u0e07\u0e21\u0e35 jQuery \u0e01\u0e48\u0e2d\u0e19<\/p>\n\n\n\n<p>\u0e40\u0e2b\u0e21\u0e37\u0e2d\u0e19\u0e27\u0e48\u0e32 jQuery \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e42\u0e2b\u0e25\u0e14\u0e21\u0e32\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e41\u0e23\u0e01 &#8211; \u0e44\u0e21\u0e48\u0e04\u0e48\u0e2d\u0e22\u0e43\u0e0a\u0e49\u0e01\u0e31\u0e19\u0e41\u0e25\u0e49\u0e27?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"568\" height=\"290\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-70.png\" alt=\"\" class=\"wp-image-242\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-70.png 568w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-70-300x153.png 300w\" sizes=\"auto, (max-width: 568px) 100vw, 568px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"667\" height=\"330\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-76.png\" alt=\"\" class=\"wp-image-248\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-76.png 667w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-76-300x148.png 300w\" sizes=\"auto, (max-width: 667px) 100vw, 667px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"759\" height=\"356\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-71.png\" alt=\"\" class=\"wp-image-243\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-71.png 759w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-71-300x141.png 300w\" sizes=\"auto, (max-width: 759px) 100vw, 759px\" \/><\/figure>\n\n\n\n<p>npm run dev \u0e40\u0e1e\u0e37\u0e48\u0e2d compile mix \u0e43\u0e2b\u0e21\u0e48<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"328\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-75-1024x328.png\" alt=\"\" class=\"wp-image-247\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-75-1024x328.png 1024w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-75-300x96.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-75-768x246.png 768w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-75.png 1098w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e2b\u0e49\u0e2d\u0e07 images \u0e43\u0e19 public folder<\/p>\n\n\n\n<p>\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c full1.jpg full2.jpg thumb1.jpg thumb2.jpg<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"509\" height=\"229\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-72.png\" alt=\"\" class=\"wp-image-244\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-72.png 509w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-72-300x135.png 300w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/figure>\n\n\n\n<p>\u0e16\u0e49\u0e32 lightbox2 \u0e17\u0e33\u0e07\u0e32\u0e19 \u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e2b\u0e47\u0e19\u0e27\u0e48\u0e32\u0e40\u0e27\u0e25\u0e32 click \u0e17\u0e35\u0e48\u0e20\u0e32\u0e1e\u0e01\u0e47\u0e08\u0e30\u0e21\u0e35 popup show \u0e02\u0e36\u0e49\u0e19\u0e21\u0e32 <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"870\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-77-1024x870.png\" alt=\"\" class=\"wp-image-249\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-77-1024x870.png 1024w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-77-300x255.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-77-768x652.png 768w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-77.png 1049w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1004\" height=\"168\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-78.png\" alt=\"\" class=\"wp-image-250\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-78.png 1004w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-78-300x50.png 300w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-78-768x129.png 768w\" sizes=\"auto, (max-width: 1004px) 100vw, 1004px\" \/><\/figure>\n\n\n\n<p>\u0e40\u0e08\u0e2d\u0e1b\u0e31\u0e0d\u0e2b\u0e32\u0e27\u0e48\u0e32\u0e1b\u0e38\u0e48\u0e21\u0e21\u0e31\u0e19\u0e2b\u0e32\u0e22\u0e44\u0e1b \u0e17\u0e31\u0e49\u0e07\u0e17\u0e35\u0e48\u0e15\u0e31\u0e27\u0e1b\u0e38\u0e48\u0e21\u0e01\u0e47\u0e16\u0e39\u0e01 copy \u0e44\u0e1b\u0e27\u0e32\u0e07\u0e15\u0e31\u0e49\u0e07\u0e41\u0e15\u0e48\u0e15\u0e2d\u0e19 compile mix \u0e41\u0e25\u0e49\u0e27<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"566\" height=\"239\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-79.png\" alt=\"\" class=\"wp-image-252\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-79.png 566w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-79-300x127.png 300w\" sizes=\"auto, (max-width: 566px) 100vw, 566px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"765\" height=\"369\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-81.png\" alt=\"\" class=\"wp-image-257\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-81.png 765w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-81-300x145.png 300w\" sizes=\"auto, (max-width: 765px) 100vw, 765px\" \/><\/figure>\n\n\n\n<p>\u0e2a\u0e23\u0e49\u0e32\u0e07 \u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e41\u0e2a\u0e14\u0e07\u0e01\u0e23\u0e32\u0e1f<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">            &lt;div class=\"card mb-4\">\n            &lt;div class=\"card-header\">\n                \u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e01\u0e23\u0e32\u0e1f\u0e27\u0e07\u0e01\u0e25\u0e21 (Pie Chart)\n            &lt;\/div>\n            &lt;div class=\"card-body\">\n                {{-- 1. \u0e2a\u0e23\u0e49\u0e32\u0e07 Canvas \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e27\u0e32\u0e14\u0e01\u0e23\u0e32\u0e1f --}}\n                &lt;canvas id=\"myPieChart\" width=\"100%\" height=\"50\">&lt;\/canvas>\n            &lt;\/div>\n            &lt;div class=\"card-footer small text-muted\">\n                \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e40\u0e21\u0e37\u0e48\u0e2d: {{ now()->format('d\/m\/Y H:i') }}\n            &lt;\/div>\n        &lt;\/div><\/pre>\n\n\n\n<p>\u0e40\u0e1e\u0e34\u0e48\u0e21 code \u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25 \u0e25\u0e07\u0e43\u0e19 app.js<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">require('.\/bootstrap');\n\n\/\/ Import Libraries\nconst Swal = require('sweetalert2');\nconst Tabulator = require('tabulator-tables');\n\n\/\/ \u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49 Lightbox2 \u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01 bootstrap.js\nrequire('lightbox2');\n\nimport Chart from 'chart.js\/auto';\nwindow.Chart = Chart; \/\/ \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e40\u0e23\u0e35\u0e22\u0e01\u0e43\u0e0a\u0e49\u0e08\u0e32\u0e01\u0e17\u0e35\u0e48\u0e44\u0e2b\u0e19\u0e01\u0e47\u0e44\u0e14\u0e49\n\n\/\/ 1. SweetAlert2 Initialization\n\/\/ \u0e15\u0e49\u0e2d\u0e07\u0e41\u0e19\u0e48\u0e43\u0e08\u0e27\u0e48\u0e32 element `sweetalert-btn` \u0e16\u0e39\u0e01\u0e42\u0e2b\u0e25\u0e14\u0e43\u0e19\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a\u0e41\u0e25\u0e49\u0e27\ndocument.addEventListener('DOMContentLoaded', function () {\n    const sweetAlertBtn = document.getElementById('sweetalert-btn');\n    if (sweetAlertBtn) {\n        sweetAlertBtn.addEventListener('click', () => {\n            Swal.fire({\n                title: '\u0e2a\u0e33\u0e40\u0e23\u0e47\u0e08!',\n                text: 'SweetAlert2 \u0e17\u0e33\u0e07\u0e32\u0e19\u0e1a\u0e19 Laravel Mix \u0e41\u0e25\u0e49\u0e27!',\n                icon: 'success',\n                confirmButtonText: '\u0e22\u0e2d\u0e14\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21'\n            });\n        });\n    }\n\n    \/\/ 2. Tabulator Initialization\n    \/\/ \u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01 Blade \u0e1c\u0e48\u0e32\u0e19 tag script\n    const exampleTable = document.getElementById('example-table');\n    if (exampleTable) {\n        const tableData = JSON.parse(exampleTable.getAttribute('data-tabledata'));\n\n        new Tabulator(\"#example-table\", {\n            data: tableData,\n            layout: \"fitColumns\",\n            columns: [\n                { title: \"Name\", field: \"name\", width: 200 },\n                { title: \"Location\", field: \"location\", hozAlign: \"left\" },\n                { title: \"Gender\", field: \"gender\", hozAlign: \"center\" },\n                { title: \"Color\", field: \"col\", hozAlign: \"center\" },\n            ],\n        });\n    }\n\n    const ctx = document.getElementById('myPieChart');\n    \/\/ 3. \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e41\u0e25\u0e30\u0e15\u0e31\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e23\u0e32\u0e1f\n    const myPieChart = new Chart(ctx, {\n        type: 'pie', \/\/ \u0e1b\u0e23\u0e30\u0e40\u0e20\u0e17\u0e01\u0e23\u0e32\u0e1f\n        data: {\n            labels: [ \/\/ \u0e1b\u0e49\u0e32\u0e22\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e0a\u0e34\u0e49\u0e19\n                '\u0e1d\u0e48\u0e32\u0e22\u0e02\u0e32\u0e22',\n                '\u0e01\u0e32\u0e23\u0e15\u0e25\u0e32\u0e14',\n                'IT',\n                '\u0e1a\u0e31\u0e0d\u0e0a\u0e35'\n            ],\n            datasets: [{\n                label: '\u0e07\u0e1a\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13\u0e1d\u0e48\u0e32\u0e22',\n                data: [300, 50, 100, 75], \/\/ \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e15\u0e31\u0e27\u0e40\u0e25\u0e02\n                backgroundColor: [ \/\/ \u0e2a\u0e35\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e0a\u0e34\u0e49\u0e19\n                    'rgb(255, 99, 132)',\n                    'rgb(54, 162, 235)',\n                    'rgb(255, 205, 86)',\n                    'rgb(75, 192, 192)'\n                ],\n                hoverOffset: 4\n            }]\n        },\n        options: {\n            responsive: true, \/\/ \u0e17\u0e33\u0e43\u0e2b\u0e49\u0e01\u0e23\u0e32\u0e1f\u0e1b\u0e23\u0e31\u0e1a\u0e02\u0e19\u0e32\u0e14\u0e15\u0e32\u0e21\u0e2b\u0e19\u0e49\u0e32\u0e08\u0e2d\n            plugins: {\n                legend: {\n                    position: 'top', \/\/ \u0e41\u0e2a\u0e14\u0e07\u0e1b\u0e49\u0e32\u0e22\u0e01\u0e33\u0e01\u0e31\u0e1a\u0e44\u0e27\u0e49\u0e14\u0e49\u0e32\u0e19\u0e1a\u0e19\n                },\n                title: {\n                    display: true,\n                    text: '\u0e2a\u0e31\u0e14\u0e2a\u0e48\u0e27\u0e19\u0e07\u0e1a\u0e1b\u0e23\u0e30\u0e21\u0e32\u0e13\u0e02\u0e2d\u0e07\u0e41\u0e15\u0e48\u0e25\u0e30\u0e1d\u0e48\u0e32\u0e22' \/\/ \u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d\u0e02\u0e2d\u0e07\u0e01\u0e23\u0e32\u0e1f\n                }\n            }\n        }\n    });\n});<\/pre>\n\n\n\n<p>\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e41\u0e01\u0e49\u0e44\u0e02 app.js (\u0e43\u0e19 resources) \u0e01\u0e47\u0e15\u0e49\u0e2d\u0e07 compile \u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19 app.js (\u0e43\u0e19 public) \u0e01\u0e48\u0e2d\u0e19 \u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e01\u0e47\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e36\u0e49\u0e19\u0e21\u0e32\u0e14\u0e39<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"357\" height=\"629\" src=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-80.png\" alt=\"\" class=\"wp-image-255\" srcset=\"https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-80.png 357w, https:\/\/iotnoob.com\/wordpress\/wp-content\/uploads\/2025\/08\/image-80-170x300.png 170w\" sizes=\"auto, (max-width: 357px) 100vw, 357px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Laravel (v.8) + install stater tool &#8211; *** TEST \u0e2b\u0e25\u0e32\u0e22\u0e23\u0e2d\u0e1a\u0e41\u0e25\u0e49\u0e27 \u0e27\u0e48\u0e32 OKAY *** -&gt;&hellip;<\/p>\n","protected":false},"author":1,"featured_media":144,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/comments?post=143"}],"version-history":[{"count":11,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/143\/revisions"}],"predecessor-version":[{"id":258,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/posts\/143\/revisions\/258"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media\/144"}],"wp:attachment":[{"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/media?parent=143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/categories?post=143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iotnoob.com\/wordpress\/wp-json\/wp\/v2\/tags?post=143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}