From 6c43ee8fd1841042205e0f45aa3adaeaf19119bc Mon Sep 17 00:00:00 2001 From: ardent Date: Mon, 27 Jul 2020 01:02:18 +0200 Subject: [PATCH] Cleanup config and fix rendering --- Controller/ParameterController.php | 33 ++++-------------------- DependencyInjection/Configuration.php | 17 +++++-------- Service/ParameterService.php | 36 +++++++++++++++++++++++++-- 3 files changed, 45 insertions(+), 41 deletions(-) diff --git a/Controller/ParameterController.php b/Controller/ParameterController.php index 61f4d22..b6662d9 100644 --- a/Controller/ParameterController.php +++ b/Controller/ParameterController.php @@ -5,42 +5,19 @@ namespace Ardent\ParameterBundle\Controller; use Ardent\ParameterBundle\Service\ParameterService; -use Symfony\Component\Form\Extension\Core\Type\NumberType; -use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; class ParameterController extends BaseController { /** - * @Route("/{name}", name="parameter_bundle_parameters") + * @Route("/{category}", name="parameter_bundle_parameters") */ - public function parameters($name, + public function parameters($category, ParameterService $param, Request $request) { - $config = $param->getConfig(); - dump($config); - - $configs = [ - 'transmission' => [ - ['name' => 'transmission_url', 'type' => TextType::class], - ['name' => 'transmission_port', 'type' => NumberType::class], - ['name' => 'transmission_username', 'type' => TextType::class], - ['name' => 'transmission_password', 'type' => TextType::class], - ['name' => 'transmission_path_local', 'type' => TextType::class], - ['name' => 'transmission_path_remote', 'type' => TextType::class], - ], - 'animerss' => [ - ['name' => 'animerss_apikey', 'type' => TextType::class], - ['name' => 'animerss_baseurl', 'type' => TextType::class], - ], - 'misc' => [ - ['name' => 'rss_url', 'type' => TextType::class], - ['name' => 'torrent_quality', 'type' => TextType::class], - ], - 'all' => [], // Placeholder, lists all above values, it is captured a bit later - ]; + $configs = $param->getConfig(); // Handle all special cases for the name /*if ('list' === $name) { // List all the categories @@ -50,7 +27,7 @@ class ParameterController extends BaseController } return $this->render('list.routes.twig', ['routes' => $routes]); - } else*/if ('all' === $name) { // Show all parameters from all categories + } else*/if ('all' === $category) { // Show all parameters from all categories $allConfigs = []; foreach ($configs as $config) { $allConfigs = array_merge($allConfigs, $config); @@ -58,7 +35,7 @@ class ParameterController extends BaseController return parent::baseIndex($param, $request, $allConfigs); } else { // Show the parameters from one category - return parent::baseIndex($param, $request, $configs[$name]); + return parent::baseIndex($param, $request, $configs[$category]); } } } \ No newline at end of file diff --git a/DependencyInjection/Configuration.php b/DependencyInjection/Configuration.php index 259dcc0..a4aabb6 100644 --- a/DependencyInjection/Configuration.php +++ b/DependencyInjection/Configuration.php @@ -20,17 +20,12 @@ class Configuration implements ConfigurationInterface ->children() ->arrayNode('parameters') ->arrayPrototype() - ->children() - ->scalarNode('group')->defaultValue('misc')->end() - ->arrayNode('values') - ->arrayPrototype() - ->children() - ->scalarNode('name')->end() - ->enumNode('type') - ->values([self::TYPE_TEXT, self::TYPE_NUMBER]) - ->defaultValue(self::TYPE_TEXT) - ->end() - ->end() + ->arrayPrototype() + ->children() + ->scalarNode('name')->end() + ->enumNode('type') + ->values([self::TYPE_TEXT, self::TYPE_NUMBER]) + ->defaultValue(self::TYPE_TEXT) ->end() ->end() ->end() diff --git a/Service/ParameterService.php b/Service/ParameterService.php index a3d257f..0c7b23b 100644 --- a/Service/ParameterService.php +++ b/Service/ParameterService.php @@ -2,9 +2,12 @@ namespace Ardent\ParameterBundle\Service; +use Ardent\ParameterBundle\DependencyInjection\Configuration; use Ardent\ParameterBundle\Entity\Parameter; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; +use Symfony\Component\Form\Extension\Core\Type\NumberType; +use Symfony\Component\Form\Extension\Core\Type\TextType; class ParameterService { @@ -26,12 +29,12 @@ class ParameterService { $this->em = $em; $this->parameter = $parameter; - $this->config = $config; + $this->config = $this->supplementConfig($config); } /** * @param string $name - * @param bool $parse + * @param bool $parse * * @return string */ @@ -80,6 +83,35 @@ class ParameterService $this->em->flush(); } + /** + * Replaces the types in the config by their classes + * + * @param $config + * @return array + */ + private function supplementConfig($config) + { + foreach ($config as $groupName => &$group) { + foreach ($group as &$value) { + switch ($value['type']) { + default: + case Configuration::TYPE_TEXT: + $class = TextType::class; + break; + case Configuration::TYPE_NUMBER: + $class = NumberType::class; + break; + } + + $value['name'] = sprintf('%s_%s', $groupName, $value['name']); + $value['type'] = $class; + unset($value); + } + unset($group); + } + return $config; + } + /** * @return array */