artisanry / mentions
Mentions based on Eloquent models for Laravel 5.
Fund package maintenance!
faustbrian
Requires
- php: ^7.2
- illuminate/support: ^5.8|^6.0
- laravelcollective/html: ^5.8|^6.0
Requires (Dev)
- graham-campbell/testbench: ^5.0
- mockery/mockery: ^1.0
- phpunit/phpunit: ^8.2
README
This package makes it possible to create text/textarea fields that enable mentioning by using At.js.
The data for the autocomplete is loaded from a route which will load data based on predefined key-value pairs of an alias and a model in the config.
Installation
Require this package, with Composer, in the root directory of your project.
$ composer require artisanry/mentions
If you need to modify the configuration or the views, you can run:
php artisan vendor:publish --provider="Artisanry\Mentions\MentionsServiceProvider"
The package views will now be located in the app/resources/views/vendor/mentions/
directory and the configuration will be located at app/config/mentions.php
.
Configuration
To make it possible for At.js to load data we need to define key-value pairs that consist of an alias and a corresponding model.
return [ 'users' => 'App\User', // responds to /api/mentions/users 'friends' => 'App\Friend', // responds to /api/mentions/friends 'clients' => 'App\Client', // responds to /api/mentions/clients 'supports' => 'App\Supporter', // responds to /api/mentions/supports ];
So now with these aliases
configured we could create a new textfield which will send a request to the users
route and search for matching data in the name
column.
{!! mention()->asText('recipient', old('recipient'), 'users', 'name') !!}
Usage
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Laravel PHP Framework</title> <link rel="stylesheet" type="text/css" href="/styles/jquery.atwho.min.css"> </head> <body> <div class="container"> {!! mention()->asText('recipient', old('recipient'), 'users', 'name') !!} {!! mention()->asTextArea('message', old('message'), 'users', 'name') !!} </div><!-- /.container --> <!-- Requirements --> <script src="//code.jquery.com/jquery-2.1.3.min.js"></script> <script src="/scripts/jquery.atwho.min.js"></script> <script src="/scripts/jquery.caret.min.js"></script> <!-- Laravel Mentions --> @include('mentions::assets') </body> </html>
Testing
$ phpunit
Security
If you discover a security vulnerability within this package, please send an e-mail to hello@basecode.sh. All security vulnerabilities will be promptly addressed.
Credits
This project exists thanks to all the people who contribute.
License
Mozilla Public License Version 2.0 (MPL-2.0).