Backpack for Laravel

Backpack for Laravel

A collection of Laravel packages to build a custom admin panel.

Documentation    Support

Install on Laravel 5.3

Each Backpack package has its own installation instructions in its readme file. We duplicate them here for easy access.

Fast installer in the works

A command-line-wizard installer is planned, but will take some time to develop. Until then, this is the recommended way to install the packages.

1. Install Laravel 5.3

Use the steps in the Laravel Documentation. Most likely it's running:

composer create-project --prefer-dist laravel/laravel yourprojectname

Remember to:

  • "chmod -R o+w" the storage and bootstrap/cache directories
  • enter your database information in the .env file

You may need to generate a key

If you've chosen NOT to install Laravel using the steps above, and you've done it using laravel new yourprojectname, remember you need to generate a key, using php artisan key:generate

2. Install Backpack\Base

1) Run in your terminal:

cd yourprojectname
composer require backpack/base

2) Add the service providers in config/app.php, at the end of the providers array:

/*
* Backpack Service Providers...
*/
Backpack\Base\BaseServiceProvider::class,

3) Then run a few commands in the terminal:

php artisan vendor:publish --provider="Backpack\Base\BaseServiceProvider" #publishes configs, langs, views and AdminLTE files
php artisan vendor:publish --provider="Prologue\Alerts\AlertsServiceProvider" # publish config for notifications - prologue/alerts
php artisan migrate #generates users table (using Laravel's default migrations)

4) Make sure the reset password emails have the correct reset link by editing the adding these to your User model:

  • before class name:
use Backpack\Base\app\Notifications\ResetPasswordNotification as ResetPasswordNotification;
  • as a method inside the User class:
    /**
     * Send the password reset notification.
     *
     * @param  string  $token
     * @return void
     */
    public function sendPasswordResetNotification($token)
    {
        $this->notify(new ResetPasswordNotification($token));
    }

5) [optional] Backpack comes with a generators package that helps you create models, controllers, requests, etc from the command line. laracasts/generators is an awesome package you can use to generate migrations. Install them only if you want (for your local environment only - that's why the --dev flag). But using them can greatly improve your speed:

composer require backpack/generators --dev
composer require laracasts/generators --dev

6) [optional] Change values in config/backpack/base.php to make the admin panel your own. Backpack is white label, so you can change everything: menu color, project name, developer name etc.

7) [optional] If your application only has one login screen (for the admins), that means you're not going to use the auth controllers that Laravel provided by default. You're only going to use Backpack's auth controllers. You can keep the Laravel ones in your project, of course. But some people like to delete them to not get confused later on:

# OPTIONAL! Please read the notice above.
rm -rf app/Http/Controllers/Auth #deletes laravel's demo auth controllers

3. Install Backpack\CRUD

1) In your terminal:

composer require backpack/crud

2) Add this provider to your config/app.php, after "base":

        Backpack\CRUD\CrudServiceProvider::class,

3) Run these command in this exact order:

php artisan elfinder:publish #published elfinder assets
php artisan vendor:publish --provider="Backpack\CRUD\CrudServiceProvider" --tag="public" #publish CRUD assets
php artisan vendor:publish --provider="Backpack\CRUD\CrudServiceProvider" --tag="lang" #publish CRUD lang files 
php artisan vendor:publish --provider="Backpack\CRUD\CrudServiceProvider" --tag="config" #publish CRUD and custom elfinder config files
php artisan vendor:publish --provider="Backpack\CRUD\CrudServiceProvider" --tag="elfinder" #publish custom elFinder views

4) Define an 'uploads' disk. In your config/filesystems.php add this disk:

'uploads' => [
            'driver' => 'local',
            'root' => public_path('uploads'),
        ],

5) Create "uploads" folder in your public folder.

6) [Optional] You can now add the file manager to the menu, in resources/views/vendor/backpack/base/inc/sidebar.blade.php or menu.blade.php:

<li><a href="{{ url(config('backpack.base.route_prefix', 'admin') . '/elfinder') }}"><i class="fa fa-files-o"></i> <span>File manager</span></a></li>

---- OPTIONALS ----

Everything else is optional. Your project might use them or it might not. Only do each following step if you need the functionality that package provides.

4. Install Backpack\LangFileManager [optional]

>> See screenshots and installation

Step 1. Install via Composer

composer require backpack/langfilemanager

Step 2. Add the service provider

In your config/app.php, add this to the providers array:

Backpack\LangFileManager\LangFileManagerServiceProvider::class,

Step 3. Run the migration, seed and file publishing

php artisan migrate --path=vendor/backpack/langfilemanager/src/database/migrations
php artisan db:seed --class="Backpack\LangFileManager\database\seeds\LanguageTableSeeder"
php artisan vendor:publish --provider="Backpack\LangFileManager\LangFileManagerServiceProvider" --tag="config" #publish the config file
php artisan vendor:publish --provider="Backpack\LangFileManager\LangFileManagerServiceProvider" --tag="lang" #publish the lang files

5. Install Backpack\BackupManager [optional]

>> See screenshots and installation

1) In your terminal

composer require backpack/backupmanager

2) Then add the service providers to your config/app.php file:

Spatie\Backup\BackupServiceProvider::class,
Backpack\BackupManager\BackupManagerServiceProvider::class,

3) Publish the config file and lang files:

php artisan vendor:publish --provider="Backpack\BackupManager\BackupManagerServiceProvider"

4) Add a new "disk" to config/filesystems.php:

        // used for Backpack/BackupManager
        'backups' => [
            'driver' => 'local',
            'root'   => storage_path('backups'), // that's where your backups are stored by default: storage/backups
        ],

This is where you choose a different driver if you want your backups to be stored somewhere else (S3, Dropbox, Google Drive, Box, etc).

5) [optional] Add a menu item for it in resources/views/vendor/backpack/base/inc/sidebar.blade.php or menu.blade.php:

<li><a href="{{ url('admin/backup') }}"><i class="fa fa-hdd-o"></i> <span>Backups</span></a></li>

6) [optional] Modify your backup options in config/laravel-backup.php

7) [optional] Instruct Laravel to run the backups automatically in your console kernel:

// app/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
   $schedule->command('backup:clean')->daily()->at('04:00');
   $schedule->command('backup:run')->daily()->at('05:00');
}

8) [optional] If you need to change the path to the mysql_dump command, you can do that in your config/database.php file. For MAMP on Mac OS, add these to your mysql connection:

            'dump_command_path' => '/Applications/MAMP/Library/bin/', // only the path, so without 'mysqldump' or 'pg_dump'
            'dump_command_timeout' => 60 * 5, // 5 minute timeout
            'dump_using_single_transaction' => true,

6. Install Backpack\LogManager [optional]

>> See screenshots and installation

1) Install via composer:

composer require backpack/logmanager

2) Then add the service provider to your config/app.php file:

    Backpack\LogManager\LogManagerServiceProvider::class,

3) Add a "storage" filesystem in config/filesystems.php:

// used for Backpack/LogManager
'storage' => [
            'driver' => 'local',
            'root'   => storage_path(),
        ],

4) [Optional] Configure Laravel to create a new log file for every day, in your .ENV file, if it's not already. Otherwise there will only be one file at all times.

    APP_LOG=daily

or directly in your config/app.php file:

    'log' => env('APP_LOG', 'daily'),

5) [Optional] Publish the lang files if you think you'll need to modify them.

    php artisan vendor:publish --provider="Backpack\LogManager\LogManagerServiceProvider"

6) [optional] Add a menu item for it in resources/views/vendor/backpack/base/inc/sidebar.blade.php or menu.blade.php:

<li><a href="{{ url('admin/log') }}"><i class="fa fa-terminal"></i> <span>Logs</span></a></li>

7. Useful CRUD: Backpack\Settings [optional]

An interface for the administrator to easily change application settings. Uses Laravel Backpack.

>> See screenshots and installation

1) In your terminal:

composer require backpack/settings

2) Add the service provider to your config/app.php file:

Backpack\Settings\SettingsServiceProvider::class,

3) Run the migration and add some example settings:

php artisan vendor:publish --provider="Backpack\Settings\SettingsServiceProvider"
php artisan migrate
php artisan db:seed --class="Backpack\Settings\database\seeds\SettingsTableSeeder"

4) [Optional] Add a menu item for it in resources/views/vendor/backpack/base/inc/sidebar.blade.php or menu.blade.php:

<li><a href="{{ url('admin/setting') }}"><i class="fa fa-cog"></i> <span>Settings</span></a></li>

8. Useful CRUD: Backpack\PageManager [optional]

>> See screenshots and installation

1) In your terminal

composer require backpack/pagemanager

2) Then add the service providers to your config/app.php file:

Cviebrock\EloquentSluggable\ServiceProvider::class, 
Backpack\PageManager\PageManagerServiceProvider::class,

3) Publish the views, migrations and the PageTemplates trait:

php artisan vendor:publish --provider="Backpack\PageManager\PageManagerServiceProvider"

4) Run the migration to have the database table we need:

php artisan migrate

5) [optional] Add a menu item for it in resources/views/vendor/backpack/base/inc/sidebar.blade.php or menu.blade.php:

<li><a href="{{ url('admin/page') }}"><i class="fa fa-file-o"></i> <span>Pages</span></a></li>

9. Useful CRUD: Backpack\MenuCRUD [optional]

An admin panel for menu items on Laravel 5, using Backpack\CRUD. Add, edit, reorder, nest, rename menu items and link them to Backpack\PageManager pages, external link or custom internal link.

>> Installation
>> Github

10. Useful CRUD: Backpack\NewsCRUD [optional]

Since NewsCRUD does not provide any extra functionality other than Backpack\CRUD, it is not a package. It's just a tutorial to show you how this can be achieved. In the future, CRUD examples like this one will be easily installed from the command line, from a central repository. Until then, you will need to manually create the files.

>> Installation
>> Github

Install on Laravel 5.3