Skip to content

Commit 480590a

Browse files
authored
Fix templates without configuration or metadata from resource bundle (#358)
Needed for a WIP feature at Jolicode. ### Create ```twig {% extends '@SyliusAdminUi/base.html.twig' %} {% block body %} {% hook ['sylius_admin.common.create'] %} {% endblock %} ``` <img width="1664" height="594" alt="Capture d’écran 2026-03-25 à 14 56 27" src="https://github.com/user-attachments/assets/86ac226c-7181-4df4-b0a5-218a1ec4c6cb" /> ### Update ```twig {% extends '@SyliusAdminUi/base.html.twig' %} {% block body %} {% hook ['sylius_admin.common.update'] %} {% endblock %} ``` <img width="1665" height="493" alt="Capture d’écran 2026-03-25 à 14 56 39" src="https://github.com/user-attachments/assets/c29aebcc-095e-41b5-81a5-982f4d8dbc23" /> ### Index ```twig {% extends '@SyliusAdminUi/base.html.twig' %} {% block body %} {% hook ['sylius_admin.common.index'] %} {% endblock %} ``` <img width="1666" height="534" alt="Capture d’écran 2026-03-25 à 14 56 52" src="https://github.com/user-attachments/assets/665b354a-ead2-43a3-9f35-094c83c68ce4" /> ### Show ```twig {% extends '@SyliusAdminUi/base.html.twig' %} {% block body %} {% hook ['sylius_admin.common.show'] %} {% endblock %} ``` <img width="1664" height="494" alt="Capture d’écran 2026-03-25 à 14 57 04" src="https://github.com/user-attachments/assets/398cf6c8-0d41-4fe6-9622-9320c32f22c1" />
2 parents eca453f + dfdbe0f commit 480590a

24 files changed

Lines changed: 212 additions & 81 deletions

File tree

config/reference.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -767,6 +767,7 @@
767767
* }
768768
* @psalm-type LiveComponentConfig = array{
769769
* secret?: scalar|Param|null, // The secret used to compute fingerprints and checksums // Default: "%kernel.secret%"
770+
* fetch_credentials?: "same-origin"|"include"|"omit"|Param, // The default fetch credentials mode for all Live Components ('same-origin', 'include', 'omit') // Default: "same-origin"
770771
* }
771772
* @psalm-type StimulusConfig = array{
772773
* controller_paths?: list<scalar|Param|null>,
@@ -1474,6 +1475,9 @@
14741475
* path?: scalar|Param|null, // The local icon set directory path. (cannot be used with 'alias')
14751476
* alias?: scalar|Param|null, // The remote icon set identifier. (cannot be used with 'path')
14761477
* icon_attributes?: array<string, scalar|Param|null>,
1478+
* suffixes?: array<string, array{ // The suffix name (e.g. "solid", "20-solid") // Default: []
1479+
* icon_attributes?: array<string, scalar|Param|null>,
1480+
* }>,
14771481
* }>,
14781482
* aliases?: array<string, string|Param>,
14791483
* iconify?: bool|array{ // Configuration for the remote icon service.

config/routes.yaml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,27 @@ index:
33
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
44
defaults:
55
template: base.html.twig
6+
7+
basic_create:
8+
path: /basic/create
9+
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
10+
defaults:
11+
template: basic/create.html.twig
12+
13+
basic_update:
14+
path: /basic/update
15+
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
16+
defaults:
17+
template: basic/update.html.twig
18+
19+
basic_index:
20+
path: /basic/index
21+
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
22+
defaults:
23+
template: basic/index.html.twig
24+
25+
basic_show:
26+
path: /basic/show
27+
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
28+
defaults:
29+
template: basic/show.html.twig
Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,27 @@
11
{% if form is not defined %}
2-
{% set form = hookable_metadata.context.form %}
2+
{% set form = hookable_metadata.context.form|default(null) %}
33
{% endif %}
44

55
{% if resource is not defined %}
66
{% set resource = hookable_metadata.context.resource|default(null) %}
77
{% endif %}
88

9-
{% form_theme form '@SyliusBootstrapAdminUi/shared/form_theme.html.twig' %}
9+
{% if form is not null %}
10+
{% form_theme form '@SyliusBootstrapAdminUi/shared/form_theme.html.twig' %}
1011

11-
<div class="container-xl" {% if attributes is defined %} {{ attributes }} {% endif %}>
12-
{{ form_start(form, {'attr': {'novalidate': 'novalidate', 'id': form.vars.id}}) }}
13-
<div class="card-body">
14-
{% if hookable_metadata.configuration.method is defined %}
15-
<input type="hidden" name="_method" value="{{ hookable_metadata.configuration.method }}"/>
16-
{% elseif form.vars.data.id|default(null) is not null %}
17-
<input type="hidden" name="_method" value="PUT"/>
18-
{% endif %}
19-
{{ form_errors(form) }}
20-
{{ form_widget(form._token) }}
12+
<div class="container-xl" {% if attributes is defined %} {{ attributes }} {% endif %}>
13+
{{ form_start(form, {'attr': {'novalidate': 'novalidate', 'id': form.vars.id}}) }}
14+
<div class="card-body">
15+
{% if hookable_metadata.configuration.method is defined %}
16+
<input type="hidden" name="_method" value="{{ hookable_metadata.configuration.method }}"/>
17+
{% elseif form.vars.data.id|default(null) is not null %}
18+
<input type="hidden" name="_method" value="PUT"/>
19+
{% endif %}
20+
{{ form_errors(form) }}
21+
{{ form_widget(form._token) }}
2122

22-
{% hook 'form' with { form, resource } %}
23+
{% hook 'form' with { form, resource } %}
24+
</div>
25+
{{ form_end(form, {render_rest: hookable_metadata.configuration.render_rest|default(false)}) }}
2326
</div>
24-
{{ form_end(form, {render_rest: hookable_metadata.configuration.render_rest|default(false)}) }}
25-
</div>
27+
{% endif %}

src/BootstrapAdminUi/templates/shared/crud/common/content/header/title_block/actions.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% set resources = hookable_metadata.context.resources %}
1+
{% set resources = hookable_metadata.context.resources|default(null) %}
22

33
<div class="col-12 col-md-auto ms-auto d-print-none">
44
<div class="btn-list">
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
{% import '@SyliusBootstrapAdminUi/shared/helper/button.html.twig' as button %}
22

3-
{% set configuration = hookable_metadata.context.configuration %}
3+
{% set configuration = hookable_metadata.context.configuration|default(null) %}
44

5-
{% set index_url = sylius_generate_redirect_path(app.request.headers.get('referer')|default(path(
6-
configuration.vars.index.route.name|default(configuration.getRouteName('index')),
7-
configuration.vars.index.route.parameters|default(configuration.vars.route.parameters|default({}))
8-
))) %}
5+
{% if app.request.headers.has('referer') or configuration is not null %}
6+
{% set index_url = sylius_generate_redirect_path(app.request.headers.get('referer')|default(path(
7+
configuration.vars.index.route.name|default(configuration.getRouteName('index')),
8+
configuration.vars.index.route.parameters|default(configuration.vars.route.parameters|default({}))
9+
))) %}
910

10-
{{ button.cancel(sylius_test_form_attribute('cancel-changes-button')|merge({ text: 'sylius.ui.cancel'|trans, url: index_url, class: 'btn' })) }}
11+
{{ button.cancel(sylius_test_form_attribute('cancel-changes-button')|merge({ text: 'sylius.ui.cancel'|trans, url: index_url, class: 'btn' })) }}
12+
{% endif %}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% import '@SyliusBootstrapAdminUi/shared/helper/button.html.twig' as button %}
22

3-
{% set form = hookable_metadata.context.form %}
3+
{% set form = hookable_metadata.context.form|default(null) %}
44

5-
{{ button.primary({ text: 'sylius.ui.create'|trans, type: 'submit', form: form.vars.id }) }}
5+
{{ button.primary({ text: 'sylius.ui.create'|trans, type: 'submit', form: form.vars.id|default(null) }) }}

src/BootstrapAdminUi/templates/shared/crud/common/content/header/title_block/actions/update.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
sylius_test_form_attribute('update-changes-button')|merge({
55
text: 'sylius.ui.update'|trans,
66
type: 'submit',
7-
form: hookable_metadata.context.form.vars.id
7+
form: hookable_metadata.context.form.vars.id|default(null)
88
})
99
) }}

src/BootstrapAdminUi/templates/shared/crud/common/content/header/title_block/title.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{% set metadata = hookable_metadata.context.metadata %}
55
{% set header = hookable_metadata.configuration.title|default(metadata.applicationName~'.ui.'~metadata.pluralName) %}
66
{% else %}
7-
{% set header = hookable_metadata.configuration.title %}
7+
{% set header = hookable_metadata.configuration.title|default(null) %}
88
{% endif %}
99

1010
{% set icon = hookable_metadata.configuration.icon|default(null) %}

src/BootstrapAdminUi/templates/shared/crud/create/content/header/breadcrumbs.html.twig

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,27 @@
44
{% set metadata = hookable_metadata.context.metadata %}
55
{% set resource_name = hookable_metadata.configuration.resource_name|default(metadata.applicationName~'.ui.'~metadata.pluralName) %}
66
{% else %}
7-
{% set resource_name = hookable_metadata.configuration.resource_name %}
7+
{% set resource_name = hookable_metadata.configuration.resource_name|default(null) %}
88
{% endif %}
99

10-
{% set configuration = hookable_metadata.context.configuration %}
11-
{% set index_url = path(
12-
configuration.vars.index.route.name|default(configuration.getRouteName('index')),
13-
configuration.vars.index.route.parameters|default(configuration.vars.route.parameters|default({}))
14-
)
15-
%}
10+
{% set configuration = hookable_metadata.context.configuration|default(null) %}
1611

17-
{{ breadcrumbs([
18-
{ name: 'sylius.ui.dashboard', url: path('sylius_admin_ui_dashboard'), active: false },
19-
{ name: resource_name, url: index_url, active: false },
20-
{ name: 'sylius.ui.new'|trans, active: true}
21-
]) }}
12+
{% if configuration is not null %}
13+
{% set index_url = path(
14+
configuration.vars.index.route.name|default(configuration.getRouteName('index')),
15+
configuration.vars.index.route.parameters|default(configuration.vars.route.parameters|default({}))
16+
) %}
17+
{% endif %}
18+
19+
{% if index_url is defined and resource_name is not null %}
20+
{{ breadcrumbs([
21+
{ name: 'sylius.ui.dashboard', url: path('sylius_admin_ui_dashboard'), active: false },
22+
{ name: resource_name, url: index_url, active: false },
23+
{ name: 'sylius.ui.new'|trans, active: true}
24+
]) }}
25+
{% else %}
26+
{{ breadcrumbs([
27+
{ name: 'sylius.ui.dashboard', url: path('sylius_admin_ui_dashboard'), active: false },
28+
{ name: 'sylius.ui.new'|trans, active: true}
29+
]) }}
30+
{% endif %}

src/BootstrapAdminUi/templates/shared/crud/create/content/header/title_block/title.html.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
{% set singular_name = hookable_metadata.configuration.resource_name|default(metadata.applicationName ~ '.ui.' ~ _context.metadata.name) %}
88
{% set header = hookable_metadata.configuration.title|default(hookable_metadata.configuration.header|default(null)) %}
99
{% else %}
10-
{% set singular_name = hookable_metadata.configuration.resource_name %}
11-
{% set header = hookable_metadata.configuration.title|default(hookable_metadata.configuration.header) %}
10+
{% set singular_name = hookable_metadata.configuration.resource_name|default(null) %}
11+
{% set header = hookable_metadata.configuration.title|default(hookable_metadata.configuration.header|default(null)) %}
1212
{% endif %}
1313

1414
{% set icon = hookable_metadata.configuration.icon|default(null) %}

0 commit comments

Comments
 (0)