Code
Explorer
You are a developer and looking for Shopware projects?
Apply Now!
sortByPositions example
'options' =>
new
PropertyGroupOptionCollection
(
)
,
]
)
;
}
\
assert
(
$group
->
get
(
'options'
)
!== null
)
;
$group
->
get
(
'options'
)
->
add
(
$option
)
;
$sorted
[
$groupId
]
=
$group
;
}
$collection
=
new
PropertyGroupCollection
(
$sorted
)
;
$collection
->
sortByPositions
(
)
;
$collection
->
sortByConfig
(
)
;
return
$collection
;
}
}
$mergedOptions
=
new
PropertyGroupOptionCollection
(
)
;
$repositoryIterator
=
new
RepositoryIterator
(
$this
->repository,
$context
->
getContext
(
)
,
$criteria
)
;
while
(
(
$loop
=
$repositoryIterator
->
fetch
(
)
)
!== null
)
{
$entities
=
$loop
->
getEntities
(
)
;
$mergedOptions
->
merge
(
$entities
)
;
}
// group options by their property-group
$grouped
=
$mergedOptions
->
groupByPropertyGroups
(
)
;
$grouped
->
sortByPositions
(
)
;
$grouped
->
sortByConfig
(
)
;
$aggregations
=
$result
->
getAggregations
(
)
;
// remove id results to prevent wrong usages
$aggregations
->
remove
(
'properties'
)
;
$aggregations
->
remove
(
'configurators'
)
;
$aggregations
->
remove
(
'options'
)
;
$aggregations
->
add
(
new
EntityResult
(
'properties',
$grouped
)
)
;
}
$collection
=
new
PropertyGroupCollection
(
$sorted
)
;
// check if product has an individual sorting configuration for property groups\
$config
=
$product
->
getVariantListingConfig
(
)
;
if
(
$config
)
{
$config
=
$config
->
getConfiguratorGroupConfig
(
)
;
}
if
(
!
$config
)
{
$collection
->
sortByPositions
(
)
;
return
$collection
;
}
$sortedGroupIds
=
array_column
(
$config
, 'id'
)
;
// ensure all ids are in the array (but only once)
$sortedGroupIds
=
array_unique
(
array_merge
(
$sortedGroupIds
,
$collection
->
getIds
(
)
)
)
;
$collection
->
sortByIdArray
(
$sortedGroupIds
)
;