Plugin development
This section shows you how to develop plugins which can be used in Voyager.
Setting up your development environment
This chapter shows you the easiest way to develop your plugin.
Choose one of the templates we provide and create a repository from it. Open composer.json
and change name
to whatever you want.
Next, push your changes to Github.
Now you are ready to require your package to your base Laravel installation.
Go to your Laravel installation, open composer.json
and add the following:
your/name
is the name you used in the composer.json
file of your plugin.
Next run composer update
in your laravel installation.
After that you are able to simply reload your page and immediately see any changes you made.
Basics
Each plugin requires some steps to be recognized by Voyager.
Service Provider Registers the plugin(s):
::: info One package can provide multiple plugins. For example, a plugin could provide multiple themes or even different types of plugins like authorization and authentication. All plugins can be enabled/disabled independently. Make sure they don't depend on each other! :::
Plugin class
The plugin class represents the actual plugin and its methods:
composer.json
To be able to find your plugin through Voyagers UI you have to provide the tag voyager2-plugin
in your composer.json file:
Types
Plugins can be of various types:
Type
Class
Description
Authentication
Handles authentication of users inside Voyager (login, password reset etc)
Authorization
Handles permissions for users and actions
Formfield
Provides one or many formfields
Generic
A plugin that doesn't fit the other types
Theme
Provides one or many themes
Each type has individual methods you have to implement in your plugin class. Check the Github link to find out more about those methods.
::: info Because the plugin type classes are interfaces you can implement multiple types in one plugin! :::
Providers
Voyager uses provider traits to provide various things. Those are:
Type
Class
Description
Authentication
Handles authentication of users inside Voyager (login, password reset etc)
Authorization
Handles permissions for users and actions
Formfield
Provides one or many formfields
Generic
A plugin that doesn't fit the other types
Theme
Provides one or many themes
Filter
Filter allow a plugin to filter and manipulate various data displayed in Voyager:
Type
Class
Description
Documentation
Layouts
Voyager\Admin\Contracts\Plugins\Features\Filter\Layouts
Filter the layouts for a given BREAD
MenuItems
Voyager\Admin\Contracts\Plugins\Features\Filter\MenuItems
Filter menu-items for the main and user-menu
Widgets
Voyager\Admin\Contracts\Plugins\Features\Filter\Widgets
Filter widgets shown on the dashboard
Media
Voyager\Admin\Contracts\Plugins\Features\Filter\Media
Filter media files in the current directory
Templates
We created templates for all types of plugins on Github to get you started easily:
Authentication
https://github.com/voyager-admin/authentication-boilerplate
Authorization
https://github.com/voyager-admin/authorization-boilerplate
Formfield
https://github.com/voyager-admin/formfield-boilerplate
Generic
https://github.com/voyager-admin/generic-boilerplate
Theme
https://github.com/voyager-admin/theme-boilerplate
Readme
You can specify a markdown file that will be shown in a modal on the plugins page.
To do so, provide an absolute path $readme
pointing to your markdown file.
Whenever you use image in this file, you have to provide a URL $readme_assets_path
pointing where the browser can access them.
For example:
Last updated
Was this helpful?