private function createRoute(MetadataInterface $metadata, array $configuration, $path, $actionName, array $methods, $isApi = false)
{
$defaults = ['_controller' => $metadata->getServiceId('controller') . sprintf(':%sAction', $actionName)];
if ($isApi && 'index' === $actionName) {
$defaults['_sylius']['serialization_groups'] = ['Default'];
}
if ($isApi && in_array($actionName, ['show', 'create', 'update'], true)) {
$defaults['_sylius']['serialization_groups'] = ['Default', 'Detailed'];
}
if ($isApi && 'delete' === $actionName) {
$defaults['_sylius']['csrf_protection'] = false;
}
if (isset($configuration['grid']) && 'index' === $actionName) {
$defaults['_sylius']['grid'] = $configuration['grid'];
}
if (isset($configuration['form']) && in_array($actionName, ['create', 'update'], true)) {
$defaults['_sylius']['form'] = $configuration['form'];
}
if (isset($configuration['section'])) {
$defaults['_sylius']['section'] = $configuration['section'];
}
if (isset($configuration['templates']) && in_array($actionName, ['show', 'index', 'create', 'update'], true)) {
$defaults['_sylius']['template'] = sprintf('%s:%s.html.twig', $configuration['templates'], $actionName);
}
if (isset($configuration['redirect']) && in_array($actionName, ['create', 'update'], true)) {
$defaults['_sylius']['redirect'] = $this->getRouteName($metadata, $configuration, $configuration['redirect']);
}
if (isset($configuration['permission'])) {
$defaults['_sylius']['permission'] = $configuration['permission'];
}
if (isset($configuration['vars']['all'])) {
$defaults['_sylius']['vars'] = $configuration['vars']['all'];
}
if (isset($configuration['vars'][$actionName])) {
$vars = isset($configuration['vars']['all']) ? $configuration['vars']['all'] : [];
$defaults['_sylius']['vars'] = array_merge($vars, $configuration['vars'][$actionName]);
}
return $this->routeFactory->createRoute($path, $defaults, [], [], '', [], $methods);
}