Configuration

Suggest edit

The package uses the standard configuration system for Laravel. It stores the main parameters in the config directory, and the main file for the platform is the file platform.php. Each setting comes with a comment explaining its purpose.

Note. If you cache your configuration files, do not forget to clear them after making changes. You can use the command php artisan config:clear to do this.

In this section, we will delve into the configuration file and provide a detailed description of each parameter.

Domain

'domain' => env('DASHBOARD_DOMAIN', null),

For many projects, the address of the location of the administration panel plays an important role. For example, the application is located at example.com, and the platform is at admin.example.com or on a third-party domain.

To specify the address you would like to use for the platform, you can set the domain parameter in the configuration file:

'domain' => 'admin.example.com',

It is important to note that your web server settings must be configured correctly for this to work. For example, if you are using Apache, you will need to set up a virtual host for the domain you specified in the configuration file.

Prefix

'prefix' => env('DASHBOARD_PREFIX', 'admin'),

The prefix parameter allows you to change the default admin prefix to any other name, such as admin or administrator. This is useful if you want to use a different prefix for your admin panel or if the default prefix is already in use by another part of your application.

For example, if you set the prefix to dashboard, the URL for the admin login page would be https://example.com/dashboard/login instead of https://example.com/admin/login.

To change the prefix, you can update the prefix parameter in the configuration file:

'prefix' => 'dashboard',

It’s worth noting that changing the prefix will also change the URL of all routes within the admin panel, so make sure to update any links or redirects that reference the old prefix.

Middleware

'middleware' => [
    'public'  => [
        'web', 
        'cache.headers:private;must_revalidate;etag'
    ],
    'private' => [
        'web',
        'platform',
        'cache.headers:private;must_revalidate;etag'
    ],
],

The middleware parameter allows you to add or change the middleware (intermediate layers) used for the admin panel. By default, the platform comes with two groups of middleware: public and private.

The public middleware is applied to routes that can be accessed by an unauthorized user, such as the login page. The private middleware, on the other hand, is applied to routes that can only be accessed by authorized users, such as the dashboard page.

You can add as many new middleware as you like. For example, you can add a middleware that filters requests from a specific IP address range or a middleware that checks for a valid API token.

Login Page

'auth' => true,

The auth parameter controls whether the package uses its own simple login interface or not. By default, it is set to true, which means the platform will use its own login interface.

If you require more advanced features such as password recovery or two-factor authentication, you can set auth to false and use a package like Jetstream or roll your own login interface.

To use a package like Jetstream, you will need to install it and configure it according to its documentation. If you roll your own login interface, you will need to create the necessary controllers, views, and routes for the login process.

'auth' => false,

Home Page

The index parameter controls the main page of the admin panel that the user will see when they first log in or click on the logo or links in the navigation bar.

'index' => 'platform.main',

The default value for this parameter is platform.main, which corresponds to the main dashboard page of the platform.

You can change this to any other route you have defined in your application. For example, if you want to redirect users to a custom dashboard page, you can update the index parameter to point to that route:

'index' => 'custom.dashboard',

It’s worth noting that you will need to create the corresponding route and controller for the new home page.

Dashboard Resources

'resource' => [
    'stylesheets' => [],
    'scripts'     => [],
],

The resource parameter allows you to add your own stylesheets or javascript scripts to the admin panel. You can globally add paths to the corresponding arrays in the configuration file.

For example, if you want to include a custom stylesheet on every page of the admin panel, you can add the path to the stylesheets array:

'resource' => [
    'stylesheets' => [
        '/path/to/custom.css'
    ],
    'scripts'     => [
        'https://example.com/js/app.js',
    ],
],

You can also specify resources through the Dashboard object, for example, in a service provider:

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Orchid\Platform\Dashboard;

class AppServiceProvider extends ServiceProvider
{
    public function boot(Dashboard $dashboard)
    {
        $dashboard->registerResource('stylesheets', 'custom.css');
        $dashboard->registerResource('scripts', 'custom.js');
    }
}

It’s worth noting that the resource file must be present in the public directory to be able to access it.

Appearance Patterns

To change some templates, it is unnecessary to publish the entire package; you can customize a part of the user interface to specify a logo, accompanying documents, etc.

'template' => [
    'header' => null,
    'footer' => null,
],

Overriding Blade Templates

Backend pages are created using Blade. You can change these using Laravel’s template override mechanism (this is the same for all packages, not just Orchid);

Following Laravel’s mechanism for overriding templates from packages is to create the /resources/views/vendor/platform/ directory in your application and create new templates with the same path as the original templates.

For example, to override /vendor/orchid/platform/resources/views/partials/search.blade.php, create a new template at /resources/views/vendor/platform/partials/search.blade.php. An illustrative example:

your-project/
├─ ...
└─ resources/
   └─ views/
      └─ vendor/
         └─ platform/
            └─ partials/
                └─ search.blade.php          

Note. Overridden templates do not receive updates or bug fixes. Think of this as turning off the autopilot.

Model Classes

The desire to change the behavior of some classes from the standard delivery is quite normal. For the platform to use your model classes instead of its own, it is necessary to register their substitution in advance using:

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Orchid\Platform\Dashboard;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Dashboard::useModel(
            \Orchid\Platform\Models\User::class, 
            \App\Models\User::class
        );
    }
}

You can use the configuration parameter, which allows you to define all the substitutions at once:

Dashboard::configure([
    'models' => [
        User::class => MyCustomClass::class,
    ],
]);

Our Friends