[Laravel] Useful Laravel Packages

Một vài package hữu ích được tổng hợp từ: https://codewithdre.com/useful-laravel-packages

Laravel Cashier

Laravel Dusk

Laravel Envoy

Laravel Horizon

Laravel Socialite

Laravel Passport

Laravel Passport w/ Socialite

Laravel Scout

Laravel Telescope (*)

  • Đây có thể coi là trợ thử đắc lực của laravel giúp cho việc debug, đặc biệt cung cấp khả năng UI đẹp mắt và thân thiện. Tuy nhiên nó lại cần thao tác với DB và publish code font end cho ứng dụng của bạn.

  • Telescope phân tích đầu đủ và chi tiết cho bạn những request đến ứng dụng exceptions, log entries, database queries, queued jobs, mail, notifications, cache operations, scheduled tasks, variable dumps và còn nhiều hơn nữa. Telescope là 1 công cụ, môi trường tuyệt vời để phát triển ứng dụng Laravel.

Telescope makes a wonderful companion to your local Laravel development environment.

Laravel Nova (sẽ thử)

Ref: https://nova.laravel.com/

Master You Universe

Nove là 1 thiết kế đẹp cho người quản trị viên quản lý ứng dụng Laravel. Nó được tạo ra 1 cách cẩn thận bởi những người đã tạo ra Laravel để giúp bạn trở thành 1 developer năng suất hơn :D

Laravel Echo

Laravel Valet (*)

Valet is a Laravel development environment for Mac minimalists. No Vagrant, no /etc/hosts file. You can even share your sites publicly using local tunnels. Yeah, we like it too.

Khi nào có MAC sẽ thử nhé =))

Laravel Valet được cấu hình trên Mac của bạn, luôn luôn chạy Nginx.

Valet còn là môi trường phát triển nhanh hơn cho Laravel, sử dụng khoảng 7MB RAM. Valet không phải là sự thay thế hoàn toàn cho Vagrant hoặc Homested, nhưng cung cấp 1 sự thay thế tuyệt vời có những thứ cơ bản linh hoạt, thích tốc độ cao hoặc đang làm việc với những máy có dung lượng RAM hạn chế.

Laravel Sanctum

Inertia.js

Jigsaw (*)

Ref: https://github.com/tightenco/jigsaw

Đây là một công cụ khác để render file view tương tự như Laravel blade.

Jigsaw is a framework for rapidly building static sites using the same modern tooling that powers your web applications.

Chúng ta có thể sử dụng cả blade template với các markdown, kĩ thuật mới với jigsaw

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
---

title: "Jigsaw is awesome!"

---

@extends('layouts.master')


@section('content')

<h1>{{ $page->title }}</h1>

<p>Contact us at {{ $page->contact_email }}</p>

@endsection

Livewire (sẽ thử, chưa hiểu lắm)

Ref: https://laravel-livewire.com/

Một công cụ cho full-stack framework cho Laravel, giúp việc building các giao diện đơn giản, mà không cần các sự gò bó từ Laravel.

Nó thiên về xây dựng các giao diện động mà không cần qua quá nhiều bước trong Laravel thì phải, sử dụng được sức mạnh to lớn như Vue và React.

Hãy xem ví dụ này
https://laravel-livewire.com/docs/quickstart

Bạn không cần phải quá nhiều route, controller mà vẫn thực hiện được các thao tác chuyển hướng, cập nhật dữ liệu vào database, cấu trúc đơn giản hơn.

Wink (*)

Ref: https://github.com/writingink/wink

Wink tích hợp trình soạn thảo, dễ dàng giúp bạn viết và trình bày các nội dung với style. Wink được xây dựng dựa trên Laravel framework, giúp mọi người dễ dàng cài đặt, bảo trì trên mọi nền tảng cloud

Nếu bạn đang viết blog, hãy thử nó xem sao

Cachet

Larecipe (sẽ thử)

Ref: https://github.com/saleem-hadad/larecipe

LaRecipe giúp bạn viết phần tài liệu (document) rõ ràng và đẹp hơn, sử dụng Markdown cho dự án và giữ các tài liệu này trong source code của bạn

LaRecipe is simply a code-driven package provides an easy way to create beautiful documentation for your product or application inside your Laravel app.

Tất cả các phần docs cho dự án sẽ được sinh ra và đính kèm trong source code luôn :D.

1
2
3
4
5
6
7
8
.
├─ config
│ └─ larecipe.php
└─ resources
└─ docs
└─ 1.0
│─ index.md
└─ overview.md

Laravel Zero (*)

Ref: https://laravel-zero.com/

Laravel Zero: Micro-framework for console applications

Nếu bạn chỉ muốn xây dựng 1 ứng dụng chỉ có console (cửa sổ dòng lệnh) mà vẫn dùng các component của Laravel, micro-framework này là dành cho bạn.

Đây là một project cộng đồng, không phải từ officical của Laravel duwojd tạo và maitain bởi Nuno Maduro - thanh niên này làm luôn Laravel Mojito nữa @@

Ví dụ đơn giản là chỉ tạo logo cho ứng dụng =))

1
php <your-app-name> app:install logo

Flarum

October CMS

Laravel Voyager

Laravel Google Maps (*)

  • Ref: https://github.com/farhanwazir/laravelgooglemaps
  • Package này có vẻ chưa được sử dụng nhiều, mới chỉ nhận được 99 stars trên Gihub, bạn cân nhắc có cần sử dụng nó không nhé.
  • Package tích hợp các chức năng của Google map vào ứng dụng của bạn :D
1
2
3
4
5
6
7
8
9
Route::get('/', function(){
$config = array();
$config['center'] = 'New York, USA';
GMaps::initialize($config);
$map = GMaps::create_map();

echo $map['js'];
echo $map['html'];
});

Nexmo & Twilio (*)

Package phục vụ gửi thông báo thông qua số điện thoại

Pwned Validator (*)

  • Ref: https://github.com/valorin/pwned-validator
  • Nếu bạn muốn cảnh báo và xem xét độ mạnh yếu của mật khẩu, package này có thể giúp bạn. Pwned Password là nửa tỉ mật khẩu trong thế giới thực trước đây đã bị lộ trong phạm vi dữ liệu. Việc so sánh đánh giá với chúng sẽ đưa ra được nguy cơ mật khẩu hiện tại đã đủ mạnh chưa?
1
'password' => 'required|string|min:6|pwned:150|confirmed',

Laravel Analytics

Laravel Google Translate (*)

Ref: https://github.com/JoggApp/laravel-google-translate

Package sử dụng Google Translate API vào ứng dụng của bạn một cách dễ dàng với tối thiểu đến không cần cấu hình, cú pháp rõ ràng và API nhất quán. Ngon.

Stripe Laravel

Laravel Debugbar (*)

  • Sở hữu 10.3k star trên Github repository, đây chắc hẳn là tool hỗ trợ dubug cho Laravel được yêu thích và sử dụng rộng rãi nhất. Với sự dễ dàng khi cài đặt và sử dụng, không quá khó hiểu khi nó lại được ưa chuộng đến vậy. Tuy nhiên nó lại cung cấp các thông tin debug trên front-end do đó nó có vẻ không hữu ích để debug cho các ứng dụng Laravel về API (Nếu bạn đang sử dụng Laravel Debugbar để debug ứng dụng cung cấp API, hãy cho mình hướng dẫn thêm ở phần comment nhé)

  • Laravel Debugbar thêm 1 thanh bar thông minh dưới trình duyệt chứa các thông tin phục vụ debug (ví dụ số lượng queries). Với Eloquent, có thể dễ dàng thực hiện các yêu cầu cơ sở dữ liệu không cần thiết để Debugbar giúp xác định mã không hiệu quả.

Clockwork (*)

Ref: https://github.com/itsgoingd/clockwork

Một tool hữu hiệu cho việc debug

  • Clockwork là một extension của trình duyệt, cung cấp tools để debug và ghi lại các hoạt động trong ứng dụng PHP, bao gồm request data, application log, database queries, routes, visualisation of application runtime and more.

  • Clockwork sử dụng một thành phần server-side, tập hợp tất cả dữ liệu và dễ dàng tích hợp với bất kỳ dự án PHP nào, bao gồm hỗ trợ ngoài luồng cho các frameworks

  • Bạn có thể xem giao diện dữ liệu được thu thập được thông qua extension Clockwork được tích hợp trên Chrome và Firefox.

Laravel N+1 Query Detector (*)

  • Ref: https://github.com/beyondcode/laravel-query-detector
  • Package này giúp bạn tăng hiệu năng cho ứng dụng bằng cách giảm số lượng truy vấn thực thi. Package sẽ theo dõi truy vấn của bạn với thời gian thực, và sẽ thông báo khi bạn nên sử dụng eager loading (N+1 queries).

Laravel Self Diagnosis (*)

Ref: https://github.com/beyondcode/laravel-self-diagnosis

Package này cho phép bạn tự thực hiện các kiểm tra chẩn đoán ứng dụng Laravel. Nó sẽ có rất nhiều checks và cho phép bạn tự custom các checks này.

Đây không phải là lệnh của Unit test, nó test ứng dụng, key, migrate các thứ các thứ ấy =))

Laravel Health Panel (chắc cần thử)

  • Ref: https://github.com/antonioribeiro/health
  • Package giúp bạn theo dõi “sức khỏe” ứng dụng của bạn và xem nó có chạy như đúng sự mong đợi và tạo ra các bảng thông báo trạng thái của các dịch vụ:
  • Khả năng cấu hình và mở rộng cao: Bạn có thể tạo các trình kiểm tra và thông báo mới rất dễ dàng, và bạn cũng có thể thay đổi mọi thứ trên đó.
  • Dễ dàng cấu hình với file YAML
  • Nhận thông báo qua các hệ thống thông báo như: mail, slack, telegram hoặc bất cứ gì bạn muốn.
  • Routes cho: panel, json result, string result và resource
  • Có thể cấu hình với thiết kế panel
  • Cache
  • Lịch trình kiểm tra để tự động nhận thông báo khi service lỗi.
  • Xem lỗi của ứng dụng trên bảng điều khiển
  • Http phản hồi mã 200, 500 và các mã lỗi khác như Envoye

Laravel Log Viewer (*)

Ref: https://github.com/rap2hpoutre/laravel-log-viewer

Package này hộ trợ cho việc đọc log

PHP Insights (*)

Ref: https://github.com/nunomaduro/phpinsights

Homepage: https://phpinsights.com/

PHP Insights được tạo ra cẩn thận để đơn giản hóa việc phân tích code của bạn từ termial và nó là điểm khởi đầu hoàn hảo để phân tích chất lượng code PHP của bạn trong project.
Các tính năng:

  • Phân tích code qualitycoding style
  • Hiển thị đẹp với code architecturecomplexity của nó
  • Được thiết kế làm việc với nhiều framework: Laravel, Symfony, Yii, Magento và hơn thế nữa
  • Chứa các built-in checks cho việc làm cho mã đáng tin cậy, các liên kết lỏng lẻo, đơn giản và rõ ràng.

Guzzle (*)

  • Ref: https://github.com/guzzle/guzzle
  • Đây là package được sử dụng nhiều trong PHP để tạo HTTP Request, call API.
  • Guzzle là 1 PHP HTTP client được tạo 1 cách dễ dàng để gửi HTTP Request tích hợp trong dịch vụ web
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');

echo $response->getStatusCode(); // 200
echo $response->getHeaderLine('content-type'); // 'application/json; charset=utf8'
echo $response->getBody(); // '{"id": 1420053, "name": "guzzle", ...}'

// Send an asynchronous request.
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
echo 'I completed! ' . $response->getBody();
});

$promise->wait();

Thư viện này chắc hẳn các bạn đã sử dụng cực kì nhiều, nên mình không giới thiệu chi tiết quá ở đây

Zttp (*)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$response = Zttp::withHeaders(['Fancy' => 'Pants'])->post($url, [
'foo' => 'bar',
'baz' => 'qux',
]);

$response->status();
// int

$response->isOk();
// true / false

$response->json();
// => [
// 'whatever' => 'was returned',
// ];

Laravel Cors (*)

Laravel Stats (*)

Laravel Backup (*)

  • Ref: https://github.com/spatie/laravel-backup

  • Package này tạo 1 bản backup cho ứng dụng của bạn. Bản backup là file zip chứa tất cả file trong thư mục bạn chỉ định với 1 bản dump database của bạn. Bản backup có thể lưu trữ 1 vài filesystems bạn đã cấu hình trong Laravel 5.

This Laravel package creates a backup of your application. The backup is a zip file that contains all files in the directories you specify along with a dump of your database. The backup can be stored on any of the filesystems you have configured in Laravel 5.

  • Bạn cảm thấy hoang mang về sao lưu? Không vấn đề! Bạn có thể sao lưu ứng dụng của mình vào nhiều filesystem cùng 1 lúc.
1
php artisan backup:run

BladeX (*)

Ref: https://github.com/spatie/laravel-blade-x

Package cho phép bạn định nghĩa các component trên view như React hay Vue ấy :D

Một vài chú ý về hiệu năng:

  • Bởi vì package hoạt động trước khi Blade biên dịch ra views, không có ảnh hưởng đến hiệu suất. Blade có thể chỉ cache tất cả các view
  • Nó là các thẻ được render trên server (serverside) nên nó không tương thích với các clientside framework như Vue Hay React
1
2
3
4
5
{{-- resources/views/components/myAlert.blade.php --}}

<div class="{{ $type }}">
{{ $message }}
</div>
AppServiceProvider boot()
1
BladeX::component('components.myAlert');
1
2
3
<h1>My view</h1>

<my-alert type="error" :message="$message" />

Blade Filters (*)

Ref: https://github.com/thepinecode/blade-filters

Use string filters easily in Laravel Blade.

1
2
3
4
5
6
7
8
9
10
11
{{ 'john' | ucfirst }} // John

{{ 'john' | ucfirst | substr:0,1 }} // J

{{ '1999-12-31' | date:'Y/m/d' }} // 1999/12/31

{{ 'This is a title' | slug }} // this-is-a-title

{{ 'This is a title' | title }} // This Is A Title

{{ 'foo_bar' | studly }} // FooBar

Lambo (*)

Ref: https://github.com/tightenco/lambo

Một cách tạo ứng dụng khác, super-powered laravel new đối với Laravel và Valet.

1
2
3
lambo new superApplication --path=~/Sites

lambo new superApplication --auth

Artisan View (*)

Ref: https://github.com/svenluijten/artisan-view

Bình thường các lệnh artisan không có tạo view. Packge này giúp bạn thêm các lệnh sinh ra các blade files, có thể extend các views khác, thêm các section, thêm các template hoặc nhiều hơn thế.

1
2
3
4
5
6
7
8
# Create a view 'index.blade.php' in the default directory
$ php artisan make:view index

# Create a view 'index.blade.php' in a subdirectory ('pages')
$ php artisan make:view pages.index

# Create a view with a different file extension ('index.html')
$ php artisan make:view index --extension=html

Mail Eclipse (*)

Ref: https://github.com/Qoraiche/laravel-mail-editor

MailEclipse là 1 mailable editor package cho ứng dụng Laravel để tạo và quản lý các mẫu emails sử dụng web UI. Bạn có thể sử dụng package này để phát triển các mẫu mailables mà không cần sử dụng command line và chỉnh sửa các mẫu email trực tiếp với WYSIWYG editor cùng với nhiều tính năng khác.

SEO Tools (*)

Ref: https://github.com/artesaos/seotools

Phần này giúp bạn sinh ra các đoạn mã phục vụ cho SEO. Bạn làm tech, không biết các kĩ thuật SEO, đây là 1 packge không tồi :D.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

namespace App\Http\Controllers;

use Artesaos\SEOTools\Traits\SEOTools as SEOToolsTrait;

class CommomController extends Controller
{
use SEOToolsTrait;

public function index()
{
$this->seo()->setTitle('Home');
$this->seo()->setDescription('This is my page description');
$this->seo()->opengraph()->setUrl('http://current.url.com');
$this->seo()->opengraph()->addProperty('type', 'articles');
$this->seo()->twitter()->setSite('@LuizVinicius73');
$this->seo()->jsonLd()->setType('Article');

$posts = Post::all();

return view('myindex', compact('posts'));
}
}

Và kết quả ở phần view

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<html>
<head>
<title>Title - Over 9000 Thousand!</title>
<meta name='description' itemprop='description' content='description...' />
<meta name='keywords' content='key1, key2, key3' />
<meta property='article:published_time' content='2015-01-31T20:30:11-02:00' />
<meta property='article:section' content='news' />

<meta property="og:description"content="description..." />
<meta property="og:title"content="Title" />
<meta property="og:url"content="http://current.url.com" />
<meta property="og:type"content="article" />
<meta property="og:locale"content="pt-br" />
<meta property="og:locale:alternate"content="pt-pt" />
<meta property="og:locale:alternate"content="en-us" />
<meta property="og:site_name"content="name" />
<meta property="og:image"content="http://image.url.com/cover.jpg" />
<meta property="og:image"content="http://image.url.com/img1.jpg" />
<meta property="og:image"content="http://image.url.com/img2.jpg" />
<meta property="og:image"content="http://image.url.com/img3.jpg" />
<meta property="og:image:url"content="http://image.url.com/cover.jpg" />
<meta property="og:image:size"content="300" />

<meta name="twitter:card"content="summary" />
<meta name="twitter:title"content="Title" />
<meta name="twitter:site"content="@LuizVinicius73" />

<script type="application/ld+json">{"@context":"https://schema.org","@type":"Article","name":"Title - Over 9000 Thousand!"}</script>
</head>
<body>

</body>
</html>

Laravel Collection Macros (*)

Ref: https://github.com/spatie/laravel-collection-macros

Package thêm rất nhiều marcos, methods hữu ích cho collection trong Laravel

1
2
3
4
$data = new Collection([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);

$data->third(); // 3
$data->fourth(); // 4

Collect.js (*)

Ref: https://github.com/ecrmnn/collect.js/

Nếu bạn muốn sử dụng Collection của Laravel trên Javascript, đây chính là thư viện JS giúp bạn làm việc này

Collect.js được coi là một phần của Laravel Collections nhưng được phát triển bằng javascript. Nếu là một phần của Laravel Collections thì chắc chắn về hoạt động sẽ tương đồng với Laravel Collections. Collect.js phiên bản Laravel Collections javascript hoạt động tốt với kiểu giữ liệu mảng (array) và đối tượng (object).

Cài đặt

npm

1
npm install collect.js --save

yarn

1
yarn add collect.js

From CDN

Visit: https://cdnjs.com/libraries/collect.js

API

1
2
3
4
5
6
7
const collection = collect([1, 2, 3, 4, 5, 6, 7]);

const chunks = collection.chunk(4);

chunks.all();

// [[1, 2, 3, 4], [5, 6, 7]]

Laravel Frontend Presets (*)

Ref

https://github.com/laravel-frontend-presets

Đây là một tính năng mới trong Laravel 5.5. cho phép bạn chọn framework, thư viện frontend cho ứng dụng Laravel của mình hoặc gỡ bỏ chúng, quản lý thông qua lệnh artisan preset

React

1
php artisan preset react

Bootstrap

1
php artisan preset bootstrap

Remove All Scaffolding

1
php artisan preset none

Laravel View Models (*)

  • Ref: https://github.com/spatie/laravel-view-models

  • Đã bao giờ tạo 1 controller và bạn phải làm rất nhiều việc chuẩn bị các biến để truyền vào view? Bạn có thể chuyển những công việc này vào 1 thứ gọi là view mode. Về bản chất, view modes là các lớp đơn giản lấy 1 số dữ liệu và chuyển đổi nó thành cái gì đó có thể sử dụng được ở view.

  • Phần này giúp giảm tải logic Controller bằng cách thêm 1 phần xử lý logic của view là Model, tái sử dụng lại.

  • Chi tiết bạn có thể tham khảo tại blog: https://stitcher.io/blog/laravel-view-models

Phần này có thể không được ưu tiên dùng lắm, mới có 600 stars trên GitHub, có thể có nhiều cách clean code tốt hơn

ER Diagram Generator (*)

Ref: https://github.com/beyondcode/laravel-er-diagram-generator

Package cho phép bạn sinh sơ đồ thực thể liên kết bằng cách dựa vào quan hệ được định nghĩa trong model của bạn. Nó rất tùy biến. Bạn có thể sử dụng GraphViz để tạo biểu đồ :D.

Laravel Enum (*)

  • Ref: https://github.com/BenSampo/laravel-enum
  • Package hỗ trợ việc liệt kê các giá trị trong ứng dụng, các phương thức đa dạng để truy cập key/value của các giá trị này. Ngoài ra nó cũng hỗ trợ Localization và Macros.

Laravel Collective HTML (*)

Ziggy (*)

Ref: https://github.com/tightenco/ziggy

Ziggy - Use your Laravel Named Routes inside JavaScript

Ziggy tạo thêm các lệnh, helper cho Blade cái mà bạn có thể sử dụng trong views. Điều này sẽ export 1 đối tượng JavaScript ứng với routes đã được đặt tên, gán chúng với các key là tên của chúng (aliases) cũng như một helper toàn cục route(), cho phép bạn truy cập route trong file JavaScript.

Ví dụ cho file JavaScript của bạn:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
route('posts.index') // Returns '/posts'

route('posts.show', {id: 1}) // Returns '/posts/1'
route('posts.show', [1]) // Returns '/posts/1'
route('posts.show', 1) // Returns '/posts/1'


// Practical AJAX example:
var post = {id: 1, title: 'Ziggy Stardust'};

return axios.get(route('posts.show', post))
.then((response) => {
return response.data;
});

Tinkerwell

Bear Sync (*)

  • Ref: https://github.com/calebporzio/bear-sync
  • Package cung cấp một model Eloquent được gọi là BearNote, cái mà có thể truy cập Bear notes trên máy local của bạn mà không cần cấu hình tất cả.
  • BearNote model truy cập database SQLite của Bear Notes dựa vào driver database của Laravel.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$note = BearSync\BearNote::whereTitle('Some Note Title')->first();

App\Post::create([
'title' => $note->title,
'content' => $note->content,
])

/* Example API */

// Search all your Bear notes.
$notes = BearSync\BearNote::searchByTitle('Some Note Title');

// Find a specific note.
$note = BearSync\BearNote::whereTitle('Some Note Title')->first();

// Get tags by note
$tags = $note->tags

Sushi (*)

Ref

https://github.com/calebporzio/sushi

Sushi

  • Eloquent Model không hỗ trợ drive “array”
  • Đôi khi bạn muốn sử dụng Eloquent, nhưng không phải thao tác với database

Use

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class State extends Model
{
use \Sushi\Sushi;

protected $rows = [
[
'abbr' => 'NY',
'name' => 'New York',
],
[
'abbr' => 'CA',
'name' => 'California',
],
];
}
1
$stateName = State::whereAbbr('NY')->first()->name;
  • Các hàm whereAbbr nếu không sử dụng Sushi sẽ là thao tác với database để tìm kiếm. Ở đây, vẫn sử dụng được các hàm của Eloquent nhưng với thao tác mảng :D.

  • Nó cũng có thể áp dụng cho quan hệ nữa nhé, chi tiết xem lại trang chủ. Nhưng chú ý, quan hệ sẽ không dùng được whereHas do 2 models sử dụng 2 database khác riêng biệt.

How it works

Under the hood, this package creates and caches a SQLite database JUST for this model. It creates a table and populates the rows. If, for whatever reason, it can’t cache a .sqlite file, it will default to using an in-memory sqlite database.

Như vậy nó đang sử dụng SQLiite

jenssegers date (*)

  • Ref: https://github.com/jenssegers/date
  • Thư viện này mở rộng của Carbon với hỗ trợ đa ngôn ngữ. Các phương thức như format, diffForHumans, parse, createFromFormat và thêm phương thức mới timespan sẽ được dịch sang ngôn ngữ địa phương của bạn.
1
2
3
4
5
6
7
use Jenssegers\Date\Date;

Date::setLocale('nl');

echo Date::now()->format('l j F Y H:i:s'); // zondag 28 april 2013 21:58:16

echo Date::parse('-1 day')->diffForHumans(); // 1 dag geleden

Laravel Shared Data (*)

Ref: https://github.com/coderello/laravel-shared-data

Laravel Shared Data cung cấp cách dễ dàng để chia sẻ dữ liệu từ backend tới JavaScript.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use Coderello\SharedData\Facades\SharedData;

// using the facade
SharedData::put([
'user' => auth()->user(),
'post' => Post::first(),
'app' => [
'name' => config('app.name'),
'environment' => config('app.env'),
],
]);

// using the helper
share([
'user' => auth()->user(),
'post' => Post::first(),
'app' => [
'name' => config('app.name'),
'environment' => config('app.env'),
],
]);

Và sử dụng ở frontend từ window.shareData:

1
const user = window.sharedData.user;

Hoặc sử dụng global built-in helper:
1
const user = shared('user');

Và kết quả thu được

Blueprint (*)

Ref: https://github.com/laravel-shift/blueprint

Blueprint là 1 tool mã nguồn mở để tạo ra nhanh chóng nhiều các thành phần của Laravel từ 1 file duy nhất, dễ đọc với mọi người

Bạn định nghĩa các components trong Laravel mà bạn muốn tạo trong Laravel, gõ 1 lệnh, Blueprint sẽ sinh code cho bạn :D.

Ví dụ dưới đây bạn định nghĩa Models và Controllers sử dụng các diễn đạt rất rõ nghĩa, mọi người đều có thể đọc được.

draft.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
models:
Post:
title: string:400
content: longtext
published_at: nullable timestamp

controllers:
Post:
index:
query: all
render: post.index with:posts

store:
validate: title, content
save: post
send: ReviewNotification to:post.author with:post
dispatch: SyncMedia with:post
fire: NewPost with:post
flash: post.title
redirect: post.index

Và sau đó bạn chạy

1
php artisan blueprint:build [draft]

Tất cả code cho model, controller sẽ được tạo cho bạn.

Laravel Websockets

Laravel Console Menu (*)

Ref: https://github.com/nunomaduro/laravel-console-menu

Laravel Console Menu cải thiện giao diện artisan command, nó được bọc trong Laravel Console Commands.

Laravel Shopping Cart (*)

  • Ref: https://github.com/Crinsane/LaravelShoppingcart
  • Một package hỗ trợ làm việc với giỏ hàng trong Laravel. Dữ liệu giỏ hàng này sẽ được lưu trong Session.
    1
    2
    3
    4
    Cart::add($product, 1, ['size' => 'large']);
    Cart::update($rowId, ['name' => 'Product 1']); // Will update the name
    Cart::remove($rowId);
    Cart::get($rowId);

Laravel Searchable

https://github.com/nicolaslopezj/searchable
https://github.com/spatie/laravel-searchable

Laravel FakeId (*)

Nếu bạn không muốn hiển thị ID thật của các Model lên ứng dụng của bạn, có một số package giúp bạn fake hoặc băm id này ra

Laravel Comments

Laravel Breadcrumbs (*)

Ref: https://github.com/davejamesmiller/laravel-breadcrumbs

A simple Laravel-style way to create breadcrumbs.

Đầu tiên bạn tạo file đăng ký breadcrumbs

routes/breadcrumbs.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

<?php

// Home
Breadcrumbs::for('home', function ($trail) {
$trail->push('Home', route('home'));
});

// Home > About
Breadcrumbs::for('about', function ($trail) {
$trail->parent('home');
$trail->push('About', route('about'));
});

// Home > Blog
Breadcrumbs::for('blog', function ($trail) {
$trail->parent('home');
$trail->push('Blog', route('blog'));
});

// Home > Blog > [Category]
Breadcrumbs::for('category', function ($trail, $category) {
$trail->parent('blog');
$trail->push($category->title, route('category', $category->id));
});

// Home > Blog > [Category] > [Post]
Breadcrumbs::for('post', function ($trail, $post) {
$trail->parent('category', $post->category);
$trail->push($post->title, route('post', $post->id));
});

Rồi sau đó sử dụng trên views thôi

1
2
3
{{ Breadcrumbs::render('home') }}

{{ Breadcrumbs::render('category', $category) }}

Laravel Befriended (*)

Ref: https://github.com/renoki-co/befriended

Package này hỗ trợ chức năng như các mạng xã hội, như theo dõi, chặn, lọc nội dung dựa vào những model đã theo dõi và chặn @@

1
2
3
4
5
6
7
8
9
10
11
$alice = User::where('name', 'Alice')->first();
$bob = User::where('name', 'Bob')->first();
$tim = User::where('name', 'Tim')->first();

$alice->follow($bob);

$alice->following()->count(); // 1
$bob->followers()->count(); // 1

User::followedBy($alice)->get(); // Just Bob shows up
User::unfollowedBy($alice)->get(); // Tim shows up

Laravel Honeypot (*)

Ref: https://github.com/spatie/laravel-honeypot
Package này ngăn chặn spam thông qua việc submit forms. Nó sẽ sinh ra các giá trị ngẫu nhiên, ngăn chặn việc này

1
2
3
4
<form method="POST" action="{{ action(App\Http\Controllers\ContactFormSubmissionController::class, 'create') }}")>
@honeypot
<input name="myField" type="text">
</form>

Laravel Datatables

Laravel Money (*)

Ref: https://github.com/cknow/laravel-money

Package này giúp bạn cung cấp các phương thức lưu trữ và sử dụng các giá trị tiền tệ 1 cách dễ dàng

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use Cknow\Money\Money;

Money::USD(500)->add(Money::USD(500)); // $10.00
Money::USD(500)->add(Money::USD(500), Money::USD(500)); // $15.00
Money::USD(500)->subtract(Money::USD(400)); // $1.00
Money::USD(500)->subtract(Money::USD(200), Money::USD(100)); // $2.00
Money::USD(500)->multiply(2); // $10.00
Money::USD(1000)->divide(2); // $5.00
Money::USD(830)->mod(Money::USD(300)); // $2.30 -> Money::USD(230)
Money::USD(-500)->absolute(); // $5.00
Money::USD(500)->negative(); // $-5.00
Money::USD(30)->ratioOf(Money::USD(2)); // 15
Money::USD(500)->isSameCurrency(Money::USD(100)); // true
Money::USD(500)->equals(Money::USD(500)); // true
Money::USD(500)->greaterThan(Money::USD(100)); // true
Money::USD(500)->greaterThanOrEqual(Money::USD(500)); // true
Money::USD(500)->lessThan(Money::USD(1000)); // true
Money::USD(500)->lessThanOrEqual(Money::USD(500)); // true
Money::USD(500)->isZero(); // false
Money::USD(500)->isPositive(); // true
Money::USD(500)->isNegative(); // false
Money::USD(500)->getMoney(); // Instance of \Money\Money

// Aggregation
Money::min(Money::USD(100), Money::USD(200), Money::USD(300)); // Money::USD(100)
Money::max(Money::USD(100), Money::USD(200), Money::USD(300)); // Money::USD(300)
Money::avg(Money::USD(100), Money::USD(200), Money::USD(300)); // Money::USD(200)
Money::sum(Money::USD(100), Money::USD(200), Money::USD(300)); // Money::USD(600)

// Formatters
Money::USD(500)->format(); // $5.00
Money::USD(199)->format(null, null, \NumberFormatter::DECIMAL); // 1,99
Money::XBT(41000000)->formatByBitcoin(); // \xC9\x830.41
Money::USD(500)->formatByDecimal(); // 5.00
Money::USD(500)->formatByIntl(); // $5.00
Money::USD(199)->formatByIntl(null, null, \NumberFormatter::DECIMAL); // 1,99
Money::USD(500)->formatByIntlLocalizedDecimal(); // $5.00
Money::USD(199)->formatByIntlLocalizedDecimal(null, null, \NumberFormatter::DECIMAL) // 1.99

// Parsers
Money::parse('$1.00'); // Money::USD(100)
Money::parseByBitcoin("\xC9\x830.41"); // Money::XBT(41000000)
Money::parseByDecimal('1.00', 'USD'); // Money::USD(100)
Money::parseByIntl('$1.00'); // Money::USD(100)
Money::parseByIntlLocalizedDecimal('1.00', 'USD'); // Money::USD(100)

Laravel Avatar (*)

Ref: https://github.com/laravolt/avatar

Package này giúp bạn hiển thị avatart duy nhất cho mỗi người dùng dựa vào tên (khởi tạo) của họ

Laravel Menu (*)

Ref: https://github.com/spatie/laravel-menu

Package này giúp hiển thị menu sidebar một cách dễ dàng

1
2
3
4
5
6
7
Menu::macro('main', function () {
return Menu::new()
->action('HomeController@index', 'Home')
->action('AboutController@index', 'About')
->action('ContactController@index', 'Contact')
->setActiveFromRequest();
});

1
2
3
<nav class="navigation">
{!! Menu::main() !!}
</nav>

Laravel Messenger

Feature Flags

Laravel Translatable

Laravel Lang (*)

Ref: https://github.com/caouecs/Laravel-lang

Package hỗ trợ dịch các file sang nhiều loại ngôn ngữ khác nhau

Các file ngỗn ngữ ở trong thư mục “vendor/caouecs/laravel-lang”

Copy thư mục ngôn ngữ mà bạn muốn vào trong thư mục resources/lang để sử dụng trong ứng dụng của bạn.

Laravel Stats Tracker (*)

Ref: https://github.com/antonioribeiro/tracker

Packge mạnh thực sự, theo dõi RẤT NHIỀU thông tin từ các request đến ứng dụng và lưu trữ lại. Các thông tin theo dõi bao gồm:

  • Sessions
  • Page Views (hits on routes)
  • Users (logged users)
  • Devices (computer, smartphone, tablet…)
  • Languages (preference, language range)
  • User Devices (by, yeah, storing a cookie on each device)
  • Browsers (Chrome, Mozilla Firefox, Safari, Internet Explorer…)
  • Operating Systems (iOS, Mac OS, Linux, Windows…)
  • Geo Location Data (Latitute, Longitude, Country and City)
  • Routes and all its parameters
  • Events
  • Referers (url, medium, source, search term…)
  • Exceptions/Errors
  • Sql queries and all its bindings
  • Url queries and all its arguments
  • Database connections

Package này đáng để tìm hiểu xem nó hoạt động như thế nào hơn là việc áp dụng nữa, chắc tích hợp nhiều thứ lắm :v

Laravel Vue SPA (*)

Ref: https://github.com/cretueusebiu/laravel-vue-spa
Đúng như tên gọi của nó, phần này xây dựng các template sẵn, kết hợp Laravel và Vue

Đây là cả 1 project chứ không phải là package tích hợp nhé

Laravel Sweet Alert (*)

  • Ref: https://github.com/realrashid/sweet-alert
  • Package giúp hiển thị sweet alert cho Laravel
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public function store(PostRequest $request)
    {
    $post = Post::create($request->all());

    if ($post) {
    alert()->success('Post Created', 'Successfully'); // hoặc có thể dùng alert('Post Created','Successfully', 'success');
    } else {
    alert()->error('Post Created', 'Something went wrong!'); // hoặc có thể dùng alert('Post Created','Something went wrong!', 'error');
    }

    return redirect()->route('posts.index');
    }

Laravel Gravatar

Simple QrCode (*)

Ref: https://github.com/SimpleSoftwareIO/simple-qrcode

Simple QrCode rất dễ dàng được sử dụng trong Laravel khi làm việc với Bacon/BaconQrCode. Chúng tôi có tạo ra các interface thân thiện và dễ dàng cài đặt cho các người dùng Laravel.

Laravel Trix (*)

Ref: https://github.com/Te7a-Houdini/laravel-trix

Package này giúp bạn có thể cấu hình Basecamp Trix Editor để sử dụng trong ứng dụng Laravel.

1
2
3
4
5
6
7
8
9
10
<html>
<head>
@trixassets
</head>

<body>
<!-- notice that content field isn't presented in Post model -->
@trix(\App\Post::class, 'content')
</body>
</html>

Laravel Exchange Rates (*)

Ref: https://github.com/ash-jc-allen/laravel-exchange-rates

Package này tích hợp các API từ trang exchangeratesapi.io. Laravel Exchange Rates cho phép bạn nhận các lịch sủ tỉ giá trao đổi hoặc mới nhất, và có thể chuyển đổi tiền tệ giữa các đơn vị khác nhau.

Exchange Rates Between Date Range

1
2
$exchangeRates = new ExchangeRate();
$exchangeRates->exchangeRateBetweenDateRange('GBP', 'EUR', Carbon::now()->subWeek(), Carbon::now());

Convert Currencies

1
2
$exchangeRates = new ExchangeRate();
$exchangeRates->convert(100, 'GBP', 'EUR', Carbon::now());

Laravel Kustomer (*)

Ref: https://github.com/mydnic/laravel-feedback-component

Package này thêm các Feedback từ phía khách hàng dưới dạng popup lên website của bạn

Demo

Laravel DOMPDF (*)

Ref: https://github.com/barryvdh/laravel-dompdf

Package cho phép bạn thao tác, export file PDF một cách dễ dàng từ các views của Laravel. Bạn có thể lưu nó dưới dạng 1 file, hoặc 1 stream (hiển thị trên trình duyệt) hoặ tải xuống.

1
2
3
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');
return $pdf->stream();

Or sử dụng facade

1
2
$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');

Laravel Excel (*)

Có 1 tips riêng

Intervention Image (*)

Ref: http://image.intervention.io/

Một package xử lý ảnh đã quá quen thuộc với người sử dụng Laravel nhỉ :D.

Glide (đáng để thử tí đấy nhỉ)

Ref: https://github.com/spatie/laravel-glide

Đây cũng là một package cung cấp các lớp dễ dàng thao tác với các ảnh trên Laravel. Phần nhân API nó gọi đến trang Glide, một thư viện xử lý hình ảnh theo các yêu cầu cực kì dễ dàng được viết bằng PHP.

Laravel Invoices (*)

Ref: https://github.com/LaravelDaily/laravel-invoices

Package này cung cấp các interface dễ dàng sinh ra Invoice PDF files với dữ liệu dược cung cấp

Hóa đơn có thể được lưu, tải xuống hoặc stream trong 1 vài filesystems bạn đã cấu hình. Hỗ trợ nhiều template và ngôn ngữ

Laravel Charts (*)

Ref: https://charts.erik.cat/installation.html

Nếu bạn muốn vẽ biểu đồ mà không sử dụng các thư viện JavaScript, bạn có thể xem xét sử dụng thư viện này nhé.

Thư viện này được API của Chart thiết kế, có thể mở rộng và tùy chỉnh, cho phép mọi tùy chọn trong thư viện JavaScript được sử dụng nhanh chóng mà không tốn nhiều công.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php

namespace App\Http\Controllers;

use App\Charts\UserChart;
use Illuminate\Http\Request;

class UserChartController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$usersChart = new UserChart;
$usersChart->labels(['Jan', 'Feb', 'Mar']);
$usersChart->dataset('Users by trimester', 'line', [10, 25, 13])
->color("rgb(255, 99, 132)")
->backgroundcolor("rgb(255, 99, 132)");
return view('users', [ 'usersChart' => $usersChart ] );
}

}

Và đây là kết quả

Bạn có thể xem thêm tại đây

Laravel Media Library

Laravel Permission

Laravel Bouncer (*)

Ref: https://github.com/JosephSilber/bouncer

Lại thêm 1 package hỗ trợ quản lý quyền cho 1 vài ứng dụng sử dụng Eloquent models

1
2
3
4
5
6
7
8
9
// Give a user the ability to create posts
Bouncer::allow($user)->to('create', Post::class);

// Alternatively, do it through a role
Bouncer::allow('admin')->to('create', Post::class);
Bouncer::assign('admin')->to($user);

// You can also grant an ability only to a specific model
Bouncer::allow($user)->to('edit', $post);

Laravel Impersonate (*)

Ref: https://github.com/404labfr/laravel-impersonate?ref=madewithlaravel.com

Laravel Impersonate đơn giản hóa việc xác thực việc xác thực như 1 người dùng nào đó. Tiếng anh impersonate có nghĩa là mạo danh.

Cái này chắc để làm chức năng xem tường như 1 vai trò của người khác của Facebook đấy =))

1
2
3
4
5
6
7
8
/* Impersonate a user */
Auth::user()->impersonate($other_user);
// You're now logged as the $other_user

/* Leave impersonation */

Auth::user()->leaveImpersonation();
// You're now logged as your original user.

Laravel Masterpass (*)

Ref: https://github.com/imanghafoori1/laravel-MasterPass

Built with ❤️ for every smart laravel developer

Package giúp bạn cài đặt 1 master password trong file .env và login vào bất kỳ tài khoản nào với nó để mạo danh người dùng.

Điều đó có nghĩa mỗi tài khoản sẽ có 1 mật khẩu hợp lệ. Một mật khẩu gốc và master password.

Điều này cũng giúp bạn trong quá trình develop và testing bạn muốn đăng nhập nhiều usernames và không muốn nhớ tất cả các mật khẩu đúng của họ cho mỗi tài khoản test.

Nó cũng hoạt động nếu bạn sử dụng Laravel-passport.

1
$bool = Auth::isLoggedInByMasterPass();

Trên view thì sao

1
2
3
@if(Auth::isLoggedInByMasterPass())
Your are here by master password.
@endif

JWT Auth (*)

Laravel Ban (*)

Ref: https://github.com/cybercog/laravel-ban

Laravel Ban dễ dàng quản lý các Eloquent model bị ban.

Trường hợp sử dụng không bị giới hạn với User model, 1 vài Eloquent model có thể bị ban: Tổ chức, Team, Nhóm và 1 vài điều khác.

isAuth (*)

Ref: https://github.com/spiderwebtr/isauth

Package này giúp bạn kiểm tra nếu 1 người dùng hết session trước khi submit forms. Nếu session đã hết, 1 modal sẽ hiển thị lên 1 vài thông tin người dùng và yêu cầu mật khẩu để đăng nhập lại.

Laravel Test Factory Generator (*)

Package hỗ trợ bạn sinh factories từ các model đã tồn tại sẵn để bạn có thể tiến hành test ứng dụng của mình 1 cách nhanh chóng.

Ví dụ kết quả của model

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('username');
$table->string('email')->unique();
$table->string('password', 60);
$table->integer('company_id');
$table->rememberToken();
$table->timestamps();
});

class User extends Model {
public function company()
{
return $this->belongsTo(Company::class);
}
}

Sau khi chạy

1
php artisan generate:model-factory

Sẽ được như sau:

1
2
3
4
5
6
7
8
9
10
$factory->define(App\User::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
'username' => $faker->userName,
'email' => $faker->safeEmail,
'password' => bcrypt($faker->password),
'company_id' => factory(App\Company::class),
'remember_token' => Str::random(10),
];
});

Laravel Test Tools (sẽ thử, ít nhất 1 lần)

Ref: https://chrome.google.com/webstore/detail/laravel-testtools/ddieaepnbjhgcbddafciempnibnfnakl?hl=en

Một extension có khả năng sinh ra các test tích hợp trong khi bạn sử dụng ứng dụng

Important note: If you want to use the new “Import Factories” feature, you need to manually allow the chrome extension to access file URLs.
You can do so by visiting chrome://extensions , search for the “Laravel TestTools” extension and activate the checkbox “Allow access to file URLs”.

Dusk Dashboard (cũng sẽ thử)

Ref: https://github.com/beyondcode/dusk-dashboard

A beautiful dashboard for your Dusk test suites.

Paratest (cũng cần thử luôn =)))

Ref: https://github.com/paratestphp/paratest

Mục đích của ParaTest là hỗ trợ việc test song song trong PHPUnit. Một khi các PHPUnit của bạn được viết tốt, bạn có thể bỏ qua paratest trong project của mình và bắt đầu sử dụng nó mà không cần thêm bootstrap hoặc cấu hình nào.

Lợi ích của việc chạy test song song:

  • Kết quả báo báo sẽ được kết hợp lại. Chạy các test của bạn trong N tiếng trình song song và tất cả các đầu ra sẽ được gộp lại trong 1 report
  • Không cần cấu hình. Sau khi cài đặt, bạn có thể chạy luôn với vendor/bin/paratest -p4 path/to/tests
  • Linh hoạt. Cô lập các files test và tách biệt quá trình riêng, hoặc tận dụng WrapperRunner để chạy test nhanh hơn.

Lưu ý khi tối ưu tốc độ: Để nhận được các test song song 1 cách tốt nhất, bạn phải điều chỉnh các tham số thật cẩn thận.

Laravel Mojito

Ref: https://github.com/nunomaduro/laravel-mojito

Đây là một package nhẹ phục vụ cho việc testing Laravel views. Mojito được tạo và maintain bởi ]Nuno Maduro](https://nunomaduro.com/), blog nhiều chủ đề hay đấy chứ.

Dom Crawler

Ref: https://github.com/symfony/dom-crawler

Package này “tẩy” DOM cho các tài liệu XML và HTML, tránh bị crawler từ trang web khác.

Laravel Translation (nên thử nào)

Ref: https://github.com/joedixon/laravel-translation

Package quản lý các file đã ngôn ngữ, quốc tế quá trong ứng dụng của bạn. Đặc biệt, nó cung cấp giao diện làm việc hiệu quả.

It exposes a user interface allowing you to update existing and add new translations to your application.

Larastan

Ref: https://github.com/nunomaduro/larastan

Lại thêm 1 package nữa của thanh niên Nuno Maduro.

Larastan tập trung vào việc tìm ra lỗi trong code của bạn mà không thực sự chạy chúng. Nó bắt được tất cả các lớp lỗi thậm chí trước khi bạn viết test cho code.

Laravel Phone (nên thử nè)

Ref: https://github.com/Propaganistas/Laravel-Phone

Package giúp bạn làm việc với số điện thoại. Bạn có thể validate và format số điện thoại.

Demo: https://laravel-phone.herokuapp.com/

Laravel Image Optimizer

Ref: https://github.com/spatie/laravel-image-optimizer

Thêm 1 thử viện nữa xử lý ảnh. Khác với các thư viện trước cung cấp các phương thức chỉnh ảnh theo kích thước, xoay ảnh … thì package này tập trung vào việc tối ưu ảnh. Nó có thể tối ưu các ảnh PNGs, JPGs, SVGs, và GIFs bằng cách chạy chúng với các tool tối ưu ảnh

Collision

Ref: https://github.com/nunomaduro/collision

Thêm một công cụ từ Nuno Maduro. Một công cụ báo cáo lỗi đẹp cho ứng dụng dòng lệnh

Ignition

Ref: https://github.com/facade/ignition

Nếu như Collision là công cụ báo lỗi đẹp hơn cho chế độ dòng lệnh thì Ignition lại là công cụ báo lỗi đẹp hơn cho ứng dụng Laravel =))

Nestedset

Ref: https://packagist.org/packages/kalnoy/nestedset

Một package giúp bạn làm việc với dữ liệu đệ quy. Như các category hay làm chẳng hạn

1
2
3
4
5
6
7
8
9
10
11
12
13
$node = Category::create([
'name' => 'Foo',

'children' => [
[
'name' => 'Bar',

'children' => [
[ 'name' => 'Baz' ],
],
],
],
]);

Purifier (nên thử)

Ref: https://github.com/mewebstudio/purifier

Bộ lọc thẻ HTML cho ứng dụng Laravel

1
clean(Input::get('inputname'));

Laravel JS Localization

Ref: https://github.com/rmariuzzo/Laravel-JS-Localization

Package hỗ trợ I18n cho các file JavaScript

1
2
3
Lang.get('messages.home');

Lang.get('messages.welcome', { name: 'Joe' });

Tài liệu tham khảo

https://codewithdre.com/useful-laravel-packages

Author

Ming

Posted on

2020-04-26

Updated on

2021-04-10

Licensed under

Comments