stats4sd/laravel-backpack-section-title

A custom Backpack Field that lets you easily add custom headings and information boxes to split up the form.

1.2.0 2023-07-12 09:47 UTC

This package is auto-updated.

Last update: 2024-05-12 11:29:41 UTC


README

Latest Version on Packagist Total Downloads The Whole Fruit Manifesto

This package provides a new section-title Backpack field type for use in your create/edit forms that lets you easily add a nicely styled header and/or information text to your Backpack forms.

This package was created using the Laravel Backpack Addon Skeleton provided by the Backpack team.

Screenshots

image Code used to generate the screenshot: example-for-screenshot.php

Installation

Via Composer

composer require stats4sd/laravel-backpack-section-title

Usage

$this->crud->addField([
    'name' => 'field_name',
    'type' => 'section-title',
    'title' => 'Your Heading',
    'content' => 'Some information about how to complete the form, to be displayed inside a callout box',
    'variant' => 'info',
    'divider' => true,
    'view_namespace' => 'stats4sd.laravel-backpack-section-title::fields',
]);

Notice the view_namespace attribute - make sure that is exactly as above, to tell Backpack to load the field from this addon package, instead of assuming it's inside the Backpack\CRUD package.

Optional properties:

  • title (string or closure) - text to be displayed inside an <h4> tag.
  • content (string or closure) - text to be displayed inside a padded callout box. You can use any html here, and it will be rendered without stipping tags.
  • variant (string) - You can use any of the Bootstrap 4 keywords to change the colour of the left border. (e.g. primary, secondary, success, info, warning, danger, light, dark). It defaults to 'info' if left null.
  • divider (boolean) - If set to TRUE, this adds an <hr> tag above the header, in case you want an even clearer visual divide between content sections.

NOTE: The content box is rendered with {!! !!}, so there is no safety net! Make sure you never pass user content directly into the content field without sanitising it first...

Injecting $entry variables into the text

When doing an Update Operation, you may want to use some properties of the existing record in the title or content of the field. You can do this by making either property a closure with a single parameter "$entry". Your function should return the string you want rendered. For example:

$this->crud->addField([
    'name' => 'dynamic title',
    'type' => 'section-title',
    'title' => function($entry) {
        return "Editing " . $entry['name'];
    }
]);

Note that if you include this in the Create operation, $entry will be null, so write your closure to account for that. For example:

$this->crud->addField([
    'name' => 'dynamic title',
    'type' => 'section-title',
    'title' => function($entry) {
        if($entry) {
            return "Editing " . $entry['name'];
        } else {
            return "Creating new entry";
        }
    }
]);

Overwriting

If you need to change the field in any way, you can easily publish the file to your app, and modify that file any way you want. But please keep in mind that you will not be getting any updates.

Step 1. Copy-paste the blade file to your directory:

# create the fields directory if it's not already there
mkdir -p resources/views/vendor/backpack/crud/fields

# copy the blade file inside the folder we created above
cp -i vendor/stats4sd/laravel-backpack-section-title/resources/views/fields/section-title.blade.php resources/views/vendor/backpack/crud/fields/section-title.blade.php

Step 2. Remove the vendor namespace wherever you've used the field:

$this->crud->addField([
    'name' => 'agreed',
    'type' => 'toggle',
    'label' => 'I agree to the terms and conditions',
-   'view_namespace' => 'stats4sd.laravel-backpack-section-title::fields'
]);

Step 3. Uninstall this package. Since it only provides one file, and you're no longer using that file, it makes no sense to have the package installed:

composer remove stats4sd/laravel-backpack-section-title

Change log

Changes are documented here on Github. Please see the Releases tab.

Contributing

Please see contributing.md for a todolist and howtos.

Security

If you discover any security related issues, please email d.e.mills@stats4sd.org instead of using the issue tracker.

Credits

License

This project was released under MIT, so you can install it on top of any Backpack & Laravel project. Please see the license file for more information.

However, please note that you do need Backpack installed, so you need to also abide by its YUMMY License. That means in production you'll need a Backpack license code. You can get a free one for non-commercial use (or a paid one for commercial use) on backpackforlaravel.com.