Installation
Run composer require cubetools/cube-common-bundle in your Laravel project (or Symfony if legacy AppKernel.php is used). For Laravel 8+, replace AppKernel.php registration with a config/bundles.php entry:
return [
// ...
CubeTools\CubeCommonBundle\CubeToolsCubeCommonBundle::class => ['all' => true],
];
Publish Assets (if needed) Check for publishable resources (e.g., configs, views) with:
php artisan vendor:publish --provider="CubeTools\CubeCommonBundle\CubeToolsCubeCommonBundle"
First Use Case: User Settings
If using FOSUserBundle, the bundle auto-configures a user_settings service. Test it via Twig:
{{ dump(app('cube_common.user_settings').getUserSettings()) }}
Service Integration
CubeCommonBundle's services (e.g., user_settings, logger) into controllers/services:
public function __construct(
private CubeTools\CubeCommonBundle\Services\UserSettings $userSettings
) {}
config/packages/cube_common.yaml (publish config first).Routing
@CubeToolsCubeCommonBundle/Resources/config/routing/all.yml to your project’s config/routes/cube_common.yml.Event Listeners
cube_common.user_updated) via Symfony’s event dispatcher:
$dispatcher->addListener('cube_common.user_updated', function ($event) {
// Handle user update logic
});
Twig Extensions
cube_common_format_date) in Blade templates:
@php echo cube_common_format_date($date, 'Y-m-d') @endphp
AppServiceProvider:
public function register()
{
$this->app->bind(
'cube_common.user_settings',
CubeTools\CubeCommonBundle\Services\UserSettings::class
);
}
routes/web.php:
Route::prefix('cube')->group(function () {
// Include cube_common routes here
});
Kernel Compatibility
Kernel class. Use a bridge like symfony/bridge or wrap services in Laravel’s container.Class 'Kernel' not found → Add to composer.json:
"require": {
"symfony/http-kernel": "^5.4"
}
FOSUserBundle Dependency
User class or disable related services via config:
cube_common:
user_class: App\Models\User # Must implement required interfaces
fos_user_enabled: false
Route Conflicts
Route::namespace() or middleware to isolate:
Route::middleware(['web', 'cube'])->group(function () {
// Cube routes here
});
config/services.php (Laravel) or bundles.php (Symfony).php artisan view:clear
Custom User Settings
Extend the UserSettings class:
namespace App\Services;
use CubeTools\CubeCommonBundle\Services\UserSettings as BaseUserSettings;
class UserSettings extends BaseUserSettings
{
public function getCustomSetting()
{
return $this->getUser()->customAttribute;
}
}
Bind it in AppServiceProvider.
Logger Integration
Override the logger service to use Laravel’s Log facade:
# config/packages/cube_common.yaml
cube_common:
logger: monolog.logger.app # Laravel's default logger
Database Migrations
If the bundle includes migrations (e.g., user_settings table), publish and adapt them:
php artisan vendor:publish --tag=cube-common-migrations
How can I help you explore Laravel packages today?