christofferok / laravel-emojione
Laravel helper for EmojiOne
Installs: 108 512
Dependents: 0
Suggesters: 0
Security: 0
Stars: 140
Watchers: 5
Forks: 20
Open Issues: 2
Requires
- php: ~5.6|~7.0|~8.0
- emojione/emojione: ^4.0.0
- illuminate/support: ~5.1|~6.0|~7.0|~8.0|~9.0
Requires (Dev)
- phpunit/phpunit: ~4.0|~5.0
- squizlabs/php_codesniffer: ^2.3
Suggests
- emojione/assets: If you want to serve the emojione assets yourself
README
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