agence-raid/sulu-site-configuration-bundle
Installation:
composer require agence-raid/sulu-site-configuration-bundleconfig/bundles.php.config/routes/admin.yaml.Database Setup:
bin/adminconsole doctrine:migrations:diff and bin/adminconsole doctrine:migrations:migrate.Define Configuration Form:
config/forms/webspace_configs/default.xml with essential fields (e.g., logo, website_email).<property name="logo" type="single_media_selection">
<meta><title lang="en">Logo</title></meta>
</property>
Grant Permissions:
{webspace-key}.configuration permissions to relevant roles.{{ site_config('website_email') }}
Form Customization:
config/forms/webspace_configs/{webspace-key}.xml.site_configuration_{webspace-key} key in the form definition.Dynamic Configuration Retrieval:
site_config('key', 'default_value') for fallback values.SiteConfigurationService to fetch values programmatically:
$this->configurationService->get('webspace-key', 'en', 'key');
Media Handling:
logo), resolve the media object in Twig:
{% set logo = sulu_resolve_media(site_config('logo').id, app.request.locale) %}
<img src="{{ logo.url }}" alt="{{ logo.title }}">
Multi-Locale Support:
en, fr) and fetch them dynamically:
$config = $this->configurationService->getAll('webspace-key', app()->getLocale());
required, email for website_email).Missing Permissions:
{webspace-key}.configuration permissions.Form Key Mismatch:
site_configuration key (or site_configuration_{webspace-key} for overrides). A typo here will break the UI.Media Resolution:
sulu_resolve_media to avoid null references:
{% if site_config('logo') is not null %}
{% set logo = sulu_resolve_media(site_config('logo').id, app.request.locale) %}
{% endif %}
Locale Fallback:
null. Provide default values in Twig/PHP:
{{ site_config('phone', '+1 234 567 890') }}
Database Checks:
sulu_site_configuration table contains entries for your webspace/locale.bin/adminconsole doctrine:schema:update --dump-sql to check migration status.Form Validation:
Custom Field Types:
SuluFormType and registering it in the bundle’s configuration.Event Listeners:
sulu_site_configuration.update events to trigger actions (e.g., cache invalidation) when configurations change:
use AgenceRaid\SuluSiteConfigurationBundle\Event\SiteConfigurationEvent;
public function onConfigurationUpdate(SiteConfigurationEvent $event) {
// Logic here
}
API Exposure:
JsonResponse:
return new JsonResponse($this->configurationService->getAll($webspaceKey, $locale));
How can I help you explore Laravel packages today?