Closed
Description
I have a array like this, I'd like to validate the structure of the operations
, can we do this?
[
'typeName' => 'UserOperation',
'operations' => [
[
'operationName' => 'updateUser',
'resolve' => "@=hasPermission(value, 'acme_user_user_update')",
],
[
'operationName' => 'user',
'resolve' => "@=hasPermission(value, 'acme_user_user_view')",
],
[
'operationName' => 'deleteUser',
'resolve' => "@=hasPermission(value, 'acme_user_user_delete')",
]
]
]
I tried this way, it doesn't work.
$optionResolver = new OptionsResolver();
$optionResolver
->setRequired(['typeName', 'operations'])
->setAllowedTypes('typeName', ['string'])
->setDefaults([
'operation' => function (OptionsResolver $operationResolver) {
$operationResolver
->setRequired(['operationName', 'resolve'])
->setAllowedTypes('operationName', ['string'])
->setDefaults([
'public' => true,
])
;
},
])
->setAllowedTypes('operations', 'operation[]' )
->setNormalizer(
'operations',
function (Options $options, $operations) {
if (length($operations) > 0) {
throw new InvalidConfigurationException('The option "$operations" must not be empty.');
}
return $operations;
}
)
;