laravel-emojione
Laravel package to make it easier working with the gorgeous emojis from EmojiOne.
Remember to read the EmojiOne Free License and provide the appropriate attribution. Or buy a premium license
Upgrading from 3.x to 4.x
- Update your composer dependency to:
"christofferok/laravel-emojione": "^4.0"
and runcomposer update
- Update
config/emojione.php
(if you have one) with'emojiVersion' => '4.0'
If you are serving the assets yourself then you need to do the following things:
- Update your emojione/assets composer dependency to:
"emojione/assets": "^4.0"
and runcomposer update
- Update
config/emojione.php
with the correct paths and versions - Publish the assets again. See "Assets" section further down
EmojiOne 4.x/3.x vs 2.0
EmojiOne made a lot of changes in their licensing and which resources are provided in the free license. v2 code is still available in the emojione-v2 branch. If you are upgrading this package, be aware that the SVG assets are not available anymore.
Install
Via Composer
$ composer require christofferok/laravel-emojione
If you are on Laravel 5.4 or lower you need to add the following to your config/app.php
file:
Add the ServiceProvider to the providers array in config/app.php
ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider::class,
Add this to the aliases array in config/app.php
'LaravelEmojiOne' => ChristofferOK\LaravelEmojiOne\LaravelEmojiOneFacade::class,
Config:
$ php artisan vendor:publish --tag=config --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"
Usage
LaravelEmojiOne::toShort($str); // - native unicode -> shortnames
LaravelEmojiOne::shortnameToImage($str); // - shortname -> images
LaravelEmojiOne::unicodeToImage($str); // - native unicode -> images
LaravelEmojiOne::toImage($str); // - native unicode + shortnames -> images (mixed input)
Blade (equivalent to LaravelEmojiOne::toImage($str)
):
🚨 The output is not escaped so be careful with what you pass into @emojione
.
More details about how toImage($str)
works can be found at https://github.com/Ranks/emojione/blob/master/examples/PHP.md
Example
You want to let users put emoji a comment.
When you are saving a comment, you might want to run the content through LaravelEmojiOne::toShort($str)
to convert 😄
and other emoji to :smile:
etc.
Comment::create([
'content' => LaravelEmojiOne::toShort(request('content'))
]);
So if someone leaves a comment like This is an awesome comment 😄🔥
it will be saved as This is an awesome comment :smile: :fire:
In your view where you display your comments you can use
@emojione($comment->content)
and that will convert :smile:
and 😄
to the emojione equivalent.
Assets
By default it will use the assets from JSDelivr.
Remember to run this before trying to publish any of the assets:
composer require emojione/assets
If you want to serve the assets yourself you can publish them with the following commands. Remember to update config/emojione.php
PNG files in sizes 32/64/128:
$ php artisan vendor:publish --tag=public --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"
In config/emojione.php
specify the local path. Remember to specify which size you want in the path (32/64/128).
'imagePathPNG' => '/vendor/emojione/png/64/',
Sprites
If you want to use sprites:
$ php artisan vendor:publish --tag=sprites --provider="ChristofferOK\LaravelEmojiOne\LaravelEmojiOneServiceProvider"
In config/emojione.php
enable sprites:
'sprites' => true,
'spriteSize' => 32, // 32 or 64
Add the stylesheet to your HTML:
<link rel="stylesheet" href="/vendor/emojione/sprites/emojione-sprite-{{ config('emojione.spriteSize') }}.min.css"/>
License
Remember to read the EmojiOne Free License and provide the appropriate attribution. Or buy a premium license