Working With Panels

Panels are the heart and soul of Station. Out of the box, panels contains all of the functionality necessary for a user to manipulate a specific type of data in your database. There are numerous options for panels and elements giving you the flexibility to craft back-end tools to fit virtually any scenario or database structure.

Typically each panel maps to a database table one-to-one. However, a panel can also contain one or more subpanels as well as references to other tables for lookup capabilities.

A panel can also be complete overriden so you can build your own functionality from scratch, but within the user-authenticated comfort of Station.

The Build Command

Each time you add a new panel or change a panel’s configuration you need to run php artisan station:build.

This artisan command will analyze your panels and elements and then do the following:

  • generate migrations for any missing database fields, including database pivot tables
  • run the new migrations
  • generate / refresh models with foreign relationships for each panel (see “Working with Station Models” for more info)
  • seed the database (only when new user groups have been added)

If you attempt to navigate to a newly created panel in the Station navigation, you will likely encounter errors. You must run the build command first.

Accessing Panel Configuration

In your Laravel app you may wish to access a panel’s configuration array. To accomplish this, just add use Lifeboy\Station\Config\StationConfig as StationConfig to the top of any class. Then,

$my_panel_config = StationConfig::panel('my_panel_name');

Panel Creation Workflow

As discussed in “Application Level Configuration”, when you add new array elements to the user_groups associative array in your config/packages/lifeboy/station/_app.php file, you are in-effect registering new panels with Station.

Station is able to determine the behaviors of each panel given the values of the configuration parameters found in each panel’s configuration file. For example, if you have a panel named posts in your config/packages/lifeboy/station/_app.php file, then you need a corresponding posts.php file in the config/packages/lifeboy/station/ directory to define the parameters of that panel.

For example, refer to the config/packages/lifeboy/station/users.php file which was packaged with your installed copy of Station, you will notice that there are two top-level array keys, panel_options and elements:

'panel_options' => [

        // define your panel-level options here...
],

'elements'      => [

        // define your element-level options here...
],

Panel options control the overall configuration of the panel (think of this as database table-level options). Elements define how your users interact with specific database fields.

Without further ado, what follows is an exhaustive list of each and every panel and element option possible along with specific examples for each. Dive in!