LaravelPackages.net
Acme Inc.
Toggle sidebar
macrominds/laravel-choice

A modal choice dialogue for laravel

43
5
0.1.1
About macrominds/laravel-choice

macrominds/laravel-choice is a Laravel package for a modal choice dialogue for laravel. It currently has 5 GitHub stars and 43 downloads on Packagist (latest version 0.1.1). Install it with composer require macrominds/laravel-choice. Discover more Laravel packages by macrominds or browse all Laravel packages to compare alternatives.

Last updated

Modal user choice dialogue for laravel

If you have an action that needs to be confirmed before proceeding, or you want to let the user choose from multiple options, then this solution might just be exactly what you are looking for.

Example

The user has chosen to delete a person. That means that all upcoming events, hosted by this person, need to be canceled. But you don't want to cancel them silently. You want to be polite and ask the user first:

Screenshot of a modal choice dialogue implemented with macrominds/laravel-choice

Simply return the Choice where you would normally return the redirect() in your Controller.

return Choice::make(
    'Deleting the person will cancel some events',
    sprintf(
        '%s events are going to be canceled if you delete %s',
        $numEvents, $personName
    ),
    [
        Option::makeCancel('Cancel deletion'),
        Option::make(
            'Delete person and cancel events',
            route('customer.force-destroy', ['person' => $person]),
            'DELETE',
            [],
            true),
    ]
);

Depending on the choice of the user, she will be redirected either back to the previous page (standard Option::makeCancel behaviour) or to any route of your liking. You are not limited to two options.

Installation

composer require macrominds/laravel-choice.

Usage

You should call php artisan vendor:publish --tag=laravel-choice.

This will add the customizable views to resources/views/vendor/choice/* and the minimalistic styling resources/assets/sass/vendor/choice/_choice.scss to your project. You should @import "vendor/choice/choice"; in your app.scss afterwards.

In your master blade view, below all visible page elements, just before the end of your </body> or just before the <script>s at the bottom, add the following line:

{{ macrominds\laravel\choice\Choice::render() }}

Next? Nothing. You are ready to go. Just replace a return redirect() statement in your Controller with return Choice::make (//....

TODO

  • Add some documentation
  • Make php5.6 compatible
Comments