Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
getParentThemeId example
$parentBundle
=
$this
->
getThemeConfigWithLabels
(
)
;
$this
->themeLifecycleService->
refreshTheme
(
$parentBundle
,
$this
->context
)
;
$bundle
=
$this
->
getThemeConfig
(
)
;
$bundle
->
setConfigInheritance
(
[
'@' .
$parentBundle
->
getTechnicalName
(
)
]
)
;
$this
->themeLifecycleService->
refreshTheme
(
$bundle
,
$this
->context
)
;
$parentThemeEntity
=
$this
->
getTheme
(
$parentBundle
)
;
$themeEntity
=
$this
->
getTheme
(
$bundle
)
;
static
::
assertEquals
(
$parentThemeEntity
->
getId
(
)
,
$themeEntity
->
getParentThemeId
(
)
)
;
}
public
function
testThemeRefreshWithParentTheme
(
)
: void
{
$parentBundle
=
$this
->
getThemeConfigWithLabels
(
)
;
$this
->themeLifecycleService->
refreshTheme
(
$parentBundle
,
$this
->context
)
;
$bundle
=
$this
->
getThemeConfig
(
)
;
$bundle
->
setConfigInheritance
(
[
'@' .
$parentBundle
->
getTechnicalName
(
)
]
)
;
$this
->themeLifecycleService->
refreshTheme
(
$bundle
,
$this
->context
)
;
$technicalName
= null;
do
{
/** @var ThemeEntity|null $theme */
$theme
=
$this
->themeRepository->
search
(
new
Criteria
(
[
$themeId
]
)
,
$this
->context
)
->
first
(
)
;
if
(
!
$theme
instanceof ThemeEntity
)
{
break
;
}
$technicalName
=
$theme
->
getTechnicalName
(
)
;
$themeId
=
$theme
->
getParentThemeId
(
)
;
}
while
(
$technicalName
=== null &&
$themeId
!== null
)
;
return
$technicalName
;
}
}
throw
new
InvalidThemeException
(
$themeId
)
;
}
$baseThemeConfig
=
[
]
;
if
(
$withBase
)
{
$baseTheme
=
$themes
->
filter
(
fn
(
ThemeEntity
$themeEntry
)
=>
$themeEntry
->
getTechnicalName
(
)
===
$this
->baseTheme
)
->
first
(
)
;
\
assert
(
$baseTheme
!== null
)
;
$baseThemeConfig
=
$this
->
mergeStaticConfig
(
$baseTheme
)
;
}
if
(
$theme
->
getParentThemeId
(
)
)
{
$parentThemes
=
$this
->
getParentThemeIds
(
$themes
,
$theme
)
;
foreach
(
$parentThemes
as
$parentTheme
)
{
$configuredParentTheme
=
$this
->
mergeStaticConfig
(
$parentTheme
)
;
$baseThemeConfig
=
array_replace_recursive
(
$baseThemeConfig
,
$configuredParentTheme
)
;
}
}
$configuredTheme
=
$this
->
mergeStaticConfig
(
$theme
)
;
return
array_replace_recursive
(
$baseThemeConfig
,
$configuredTheme
)
;
}
if
(
$baseTheme
=== null
)
{
throw
new
InvalidThemeException
(
StorefrontPluginRegistry::BASE_THEME_NAME
)
;
}
$baseThemeConfig
=
$this
->
mergeStaticConfig
(
$baseTheme
)
;
$themeConfigFieldFactory
=
new
ThemeConfigFieldFactory
(
)
;
$configFields
=
[
]
;
$labels
=
array_replace_recursive
(
$baseTheme
->
getLabels
(
)
??
[
]
,
$theme
->
getLabels
(
)
??
[
]
)
;
$helpTexts
=
array_replace_recursive
(
$baseTheme
->
getHelpTexts
(
)
??
[
]
,
$theme
->
getHelpTexts
(
)
??
[
]
)
;
if
(
$theme
->
getParentThemeId
(
)
)
{
foreach
(
$this
->
getParentThemes
(
$themes
,
$theme
)
as
$parentTheme
)
{
$configuredParentTheme
=
$this
->
mergeStaticConfig
(
$parentTheme
)
;
$baseThemeConfig
=
array_replace_recursive
(
$baseThemeConfig
,
$configuredParentTheme
)
;
$labels
=
array_replace_recursive
(
$labels
,
$parentTheme
->
getLabels
(
)
??
[
]
)
;
$helpTexts
=
array_replace_recursive
(
$helpTexts
,
$parentTheme
->
getHelpTexts
(
)
??
[
]
)
;
}
}
$configuredTheme
=
$this
->
mergeStaticConfig
(
$theme
)
;
$themeConfig
=
array_replace_recursive
(
$baseThemeConfig
,
$configuredTheme
)
;