Affected Version
2026.1
Affected capability
Documents
Steps to reproduce
- Set config_location.predefined_properties.write_target.type: symfony-config in config/packages/pimcore.yaml
- Open Studio UI → Settings → Predefined Properties → Click "Add"
- POST /pimcore-studio/api/property throws 404: Property with ID: {uuid} not found
Actual Behavior
PropertyService::createPredefinedProperty() saves via propertyRepository->createPredefinedProperty() then immediately calls getPredefinedProperty($id) to read it back.
The predefined property is created, but the following error is return from /pimcore-studio/api/property:
{ "message": "No route found for \"GET https://pimcore.dev.local/pimcore-studio/api/property\": Method Not Allowed (Allow: POST)", "detail": "#0 /var/www/html/vendor/symfony/event-dispatcher/Debug/WrappedListener.php(115): Symfony\\Component\\HttpKernel\\EventListener\\RouterListener->onKernelRequest(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request', Object(Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher))\n#1 /var/www/html/vendor/symfony/event-dispatcher/EventDispatcher.php(206): Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener->__invoke(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request', Object(Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher))\n#2 /var/www/html/vendor/symfony/event-dispatcher/EventDispatcher.php(56): Symfony\\Component\\EventDispatcher\\EventDispatcher->callListeners(Array, 'kernel.request', Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent))\n#3 /var/www/html/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php(129): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request')\n#4 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(159): Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher->dispatch(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request')\n#5 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#6 /var/www/html/vendor/symfony/http-kernel/Kernel.php(193): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#7 /var/www/html/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#8 /var/www/html/vendor/autoload_runtime.php(32): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner->run()\n#9 /var/www/html/public/index.php(16): require_once('/var/www/html/v...')\n#10 {main}" }
With write_target: symfony-config, LocationAwareConfigRepository::saveConfig() writes a YAML file to disk and invalidates the Symfony container cache. However, loadConfigByKey() reads exclusively from containerConfig (the Symfony container compiled at boot time) or SettingsStore. The newly written YAML file is not available in containerConfig until the next container rebuild — so same-request read-back always fails.
Expected Behavior
- symfony-config write target supports same-request reads (by also reading from disk at runtime), or
- Studio UI POST /property hydrates the already-created Predefined object directly instead of re-fetching by ID
Affected class: Pimcore\Config\LocationAwareConfigRepository::loadConfigByKey() — no YAML file read at runtime, only containerConfig (compile-time) and SettingsStore
Affected Version
2026.1
Affected capability
Documents
Steps to reproduce
Actual Behavior
PropertyService::createPredefinedProperty()saves viapropertyRepository->createPredefinedProperty()then immediately callsgetPredefinedProperty($id)to read it back.The predefined property is created, but the following error is return from /pimcore-studio/api/property:
{ "message": "No route found for \"GET https://pimcore.dev.local/pimcore-studio/api/property\": Method Not Allowed (Allow: POST)", "detail": "#0 /var/www/html/vendor/symfony/event-dispatcher/Debug/WrappedListener.php(115): Symfony\\Component\\HttpKernel\\EventListener\\RouterListener->onKernelRequest(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request', Object(Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher))\n#1 /var/www/html/vendor/symfony/event-dispatcher/EventDispatcher.php(206): Symfony\\Component\\EventDispatcher\\Debug\\WrappedListener->__invoke(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request', Object(Symfony\\Component\\HttpKernel\\Debug\\TraceableEventDispatcher))\n#2 /var/www/html/vendor/symfony/event-dispatcher/EventDispatcher.php(56): Symfony\\Component\\EventDispatcher\\EventDispatcher->callListeners(Array, 'kernel.request', Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent))\n#3 /var/www/html/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php(129): Symfony\\Component\\EventDispatcher\\EventDispatcher->dispatch(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request')\n#4 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(159): Symfony\\Component\\EventDispatcher\\Debug\\TraceableEventDispatcher->dispatch(Object(Symfony\\Component\\HttpKernel\\Event\\RequestEvent), 'kernel.request')\n#5 /var/www/html/vendor/symfony/http-kernel/HttpKernel.php(76): Symfony\\Component\\HttpKernel\\HttpKernel->handleRaw(Object(Symfony\\Component\\HttpFoundation\\Request), 1)\n#6 /var/www/html/vendor/symfony/http-kernel/Kernel.php(193): Symfony\\Component\\HttpKernel\\HttpKernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request), 1, true)\n#7 /var/www/html/vendor/symfony/runtime/Runner/Symfony/HttpKernelRunner.php(35): Symfony\\Component\\HttpKernel\\Kernel->handle(Object(Symfony\\Component\\HttpFoundation\\Request))\n#8 /var/www/html/vendor/autoload_runtime.php(32): Symfony\\Component\\Runtime\\Runner\\Symfony\\HttpKernelRunner->run()\n#9 /var/www/html/public/index.php(16): require_once('/var/www/html/v...')\n#10 {main}" }With write_target: symfony-config, LocationAwareConfigRepository::saveConfig() writes a YAML file to disk and invalidates the Symfony container cache. However, loadConfigByKey() reads exclusively from containerConfig (the Symfony container compiled at boot time) or SettingsStore. The newly written YAML file is not available in containerConfig until the next container rebuild — so same-request read-back always fails.
Expected Behavior
Affected class: Pimcore\Config\LocationAwareConfigRepository::loadConfigByKey() — no YAML file read at runtime, only containerConfig (compile-time) and SettingsStore