alphalemon/app-business-slider-bundle
Installation
composer require alphalemon/app-business-slider-bundle
Ensure alphalemon-cms-bundle is installed (as a dev dependency) and properly configured in your Laravel app.
Publish Assets & Config
php artisan vendor:publish --provider="AlphaLemon\BusinessSliderBundle\BusinessSliderBundle" --tag=config
php artisan vendor:publish --provider="AlphaLemon\BusinessSliderBundle\BusinessSliderBundle" --tag=public
This generates:
config/business_slider.php (default config)public/vendor/business-slider/First Use Case: Create a Slider
{{ alphalemon_content('slider_id', 'business_slider') }}
Slider Creation & Management
$slider = \AlphaLemon\BusinessSliderBundle\Entity\Slider::find($id);
$slides = $slider->getSlides(); // Collection of Slide entities
Template Integration
alphalemon_content helper or custom Twig extension:
{% set slider = alphalemon_content('hero_banner', 'business_slider') %}
{% for slide in slider.slides %}
<img src="{{ slide.image.url }}" alt="{{ slide.title }}">
{% endfor %}
$slider = app('alphalemon.cms')->getContent('hero_banner', 'business_slider');
@foreach($slider->slides as $slide)
<img src="{{ $slide->image->url }}">
@endforeach
Dynamic Sliders
$sliders = \AlphaLemon\BusinessSliderBundle\Repository\SliderRepository::findByCategory('promotions');
Event-Driven Extensions
slider.slide.added) to trigger custom logic:
// In a service provider
$dispatcher->addListener('slider.slide.added', function ($event) {
// Log or process slide addition
});
Asset Pipeline
php artisan vendor:publish --tag=public --force
Localization
// resources/lang/en/business_slider.php
{
"slide_title": "Slide Title",
"add_slide": "Add Slide"
}
Performance
loading="lazy" in Twig/Blade.$cachedSlider = Cache::remember("slider_{$id}", 3600, function() use ($id) {
return \AlphaLemon\BusinessSliderBundle\Entity\Slider::find($id);
});
Testing
$slider = $this->createMock(\AlphaLemon\BusinessSliderBundle\Entity\Slider::class);
$slider->method('getSlides')->willReturn([/* Slide entities */]);
Dependency Conflicts
alphalemon-cms-bundle (dev dependency) may cause autoloading errors if not properly installed.composer.json includes:
"require": {
"alphalemon/alphalemon-cms-bundle": "dev-master"
}
Then run composer install.Missing Config
config/business_slider.php is missing.php artisan vendor:publish --tag=config --force
Editor UI Quirks
// Override slide template in your custom JS
AL.CMS.Editor.registerSlideTemplate('business_slider', function(slide) {
return `<div class="custom-slide">
<img src="${slide.image}">
<h3>${slide.title}</h3>
<button data-action="edit-slide">${slide.id}</button>
</div>`;
});
Database Schema
php artisan migrate --path=vendor/alphalemon/alphalemon-cms-bundle/migrations
php artisan migrate --path=vendor/alphalemon/app-business-slider-bundle/migrations
Slider Not Rendering
SELECT * FROM alphalemon_content_types WHERE name = 'business_slider';
alphalemon_contents.Editor JavaScript Errors
php artisan cache:clear
php artisan view:clear
AL.CMS errors.Permission Issues
ROLE_CONTENT_EDITOR in AlphaLemon’s security system.Custom Slide Types
Slide entity to add fields:
// src/Entity/CustomSlide.php
namespace App\Entity;
use AlphaLemon\BusinessSliderBundle\Entity\Slide as BaseSlide;
class CustomSlide extends BaseSlide {
private $customField;
// Add getters/setters and DB mapping
}
config/business_slider.php:
'slide_types' => [
'default' => \AlphaLemon\BusinessSliderBundle\Entity\Slide::class,
'custom' => \App\Entity\CustomSlide::class,
],
API Endpoints
routes/business_slider.php:
use AlphaLemon\BusinessSliderBundle\Controller\SliderController;
Route::get('/api/sliders/{id}', [SliderController::class, 'show']);
Validation Rules
$validator = \AlphaLemon\BusinessSliderBundle\Validator\SlideValidator::class;
$validator->setRules([
'image' => 'required|image|mimes:jpeg,png',
'title' => 'required|max:100',
'custom_field' => 'nullable|string',
]);
Event Listeners
EventSubscriber:
namespace App\EventSubscriber;
use AlphaLemon\BusinessSliderBundle\Event\SliderEvents;
class SliderSubscriber implements EventSubscriber {
public static function getSubscribedEvents() {
return [
SliderEvents::SLIDE_ADDED => 'onSlideAdded',
];
}
public function onSlideAdded($event) {
// Custom logic
}
}
How can I help you explore Laravel packages today?