Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
dacf3d6687 | |||
cd3c5a0a52 | |||
da8a1e37ca | |||
d20f7401c1 | |||
69abbcaf4b |
@ -60,10 +60,8 @@ abstract class BaseController extends AbstractController
|
|||||||
switch ($type) {
|
switch ($type) {
|
||||||
case CheckboxType::class:
|
case CheckboxType::class:
|
||||||
return boolval($value);
|
return boolval($value);
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
return $value;
|
return $value;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,41 +1,41 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace Ardent\ParameterBundle\Controller;
|
namespace Ardent\ParameterBundle\Controller;
|
||||||
|
|
||||||
|
|
||||||
use Ardent\ParameterBundle\Service\ParameterService;
|
use Ardent\ParameterBundle\Service\ParameterService;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
use Symfony\Component\Routing\Annotation\Route;
|
use Symfony\Component\Routing\Annotation\Route;
|
||||||
|
|
||||||
class ParameterController extends BaseController
|
class ParameterController extends BaseController
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @Route("/{category}", name="parameter_bundle_parameters")
|
* @Route("/{category}", name="parameter_bundle_parameters")
|
||||||
*/
|
*/
|
||||||
public function parameters($category,
|
public function parameters($category = 'categories',
|
||||||
ParameterService $param,
|
ParameterService $param,
|
||||||
Request $request)
|
Request $request)
|
||||||
{
|
{
|
||||||
$configs = $param->getConfig();
|
$configs = $param->getConfig();
|
||||||
|
|
||||||
// Handle all special cases for the name
|
// Handle all special cases for the name
|
||||||
/*if ('list' === $name) { // List all the categories
|
if ('categories' === $category) { // List all the categories
|
||||||
$routes = [];
|
$categories = [];
|
||||||
foreach ($configs as $key => $config) {
|
foreach ($configs as $key => $config) {
|
||||||
$routes[] = ['route' => 'parameters', 'params' => ['name' => $key], 'title' => $key];
|
$categories[] = $key;
|
||||||
}
|
}
|
||||||
|
$categories[] = 'all';
|
||||||
return $this->render('list.routes.twig', ['routes' => $routes]);
|
return $this->render('@ArdentParameter/categories.html.twig', ['categories' => $categories]);
|
||||||
} else*/if ('all' === $category) { // Show all parameters from all categories
|
} elseif ('all' === $category) { // Show all parameters from all categories
|
||||||
$allConfigs = [];
|
$allConfigs = [];
|
||||||
foreach ($configs as $config) {
|
foreach ($configs as $config) {
|
||||||
$allConfigs = array_merge($allConfigs, $config);
|
$allConfigs = array_merge($allConfigs, $config);
|
||||||
}
|
}
|
||||||
|
|
||||||
return parent::baseIndex($param, $request, $allConfigs);
|
return parent::baseIndex($param, $request, $allConfigs);
|
||||||
} else { // Show the parameters from one category
|
} else { // Show the parameters from one category
|
||||||
return parent::baseIndex($param, $request, $configs[$category]);
|
return parent::baseIndex($param, $request, $configs[$category]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,38 +1,39 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace Ardent\ParameterBundle\DependencyInjection;
|
namespace Ardent\ParameterBundle\DependencyInjection;
|
||||||
|
|
||||||
|
|
||||||
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
|
||||||
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
use Symfony\Component\Config\Definition\ConfigurationInterface;
|
||||||
|
|
||||||
class Configuration implements ConfigurationInterface
|
class Configuration implements ConfigurationInterface
|
||||||
{
|
{
|
||||||
public const TYPE_TEXT = 'text';
|
public const TYPE_TEXT = 'text';
|
||||||
public const TYPE_NUMBER = 'number';
|
public const TYPE_NUMBER = 'number';
|
||||||
|
public const TYPE_BOOL = 'bool';
|
||||||
public function getConfigTreeBuilder()
|
|
||||||
{
|
public function getConfigTreeBuilder()
|
||||||
$treeBuilder = new TreeBuilder('ardent_parameter');
|
{
|
||||||
|
$treeBuilder = new TreeBuilder('ardent_parameter');
|
||||||
$treeBuilder->getRootNode()
|
|
||||||
->children()
|
$treeBuilder->getRootNode()
|
||||||
->arrayNode('parameters')
|
->children()
|
||||||
->arrayPrototype()
|
->arrayNode('parameters')
|
||||||
->arrayPrototype()
|
->arrayPrototype()
|
||||||
->children()
|
->arrayPrototype()
|
||||||
->scalarNode('name')->end()
|
->children()
|
||||||
->enumNode('type')
|
->scalarNode('name')->end()
|
||||||
->values([self::TYPE_TEXT, self::TYPE_NUMBER])
|
->enumNode('type')
|
||||||
->defaultValue(self::TYPE_TEXT)
|
->values([self::TYPE_TEXT, self::TYPE_NUMBER, self::TYPE_BOOL])
|
||||||
->end()
|
->defaultValue(self::TYPE_TEXT)
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
->end()
|
->end()
|
||||||
->end();
|
->end()
|
||||||
|
->end();
|
||||||
return $treeBuilder;
|
|
||||||
}
|
return $treeBuilder;
|
||||||
|
}
|
||||||
}
|
}
|
9
Resources/views/categories.html.twig
Normal file
9
Resources/views/categories.html.twig
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{% extends '@ArdentParameter/layout.html.twig' %}
|
||||||
|
|
||||||
|
|
||||||
|
{% block par_user_content %}
|
||||||
|
<h2>Parameter categories</h2><br>
|
||||||
|
{% for category in categories %}
|
||||||
|
<a class="btn-primary btn" href="{{ path('parameter_bundle_parameters', {category:category}) }}">{{ category }}</a><br><br>
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
@ -0,0 +1 @@
|
|||||||
|
{# Add extra content on the bottom of the form #}
|
@ -1,8 +1,8 @@
|
|||||||
{% extends '@ArdentParameter/layout.html.twig' %}
|
{% extends '@ArdentParameter/layout.html.twig' %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{% block par_user_content %}
|
{% block par_user_content %}
|
||||||
|
<a class="btn-primary btn" href="{{ path('parameter_bundle_parameters', {category:'categories'}) }}">Back</a> <br><br>
|
||||||
{{ form(parameter_form) }}
|
{{ form(parameter_form) }}
|
||||||
{% include '@ArdentParameter/form.extra.html.twig' %}
|
{% include '@ArdentParameter/form.extra.html.twig' %}
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -6,6 +6,7 @@ use Ardent\ParameterBundle\DependencyInjection\Configuration;
|
|||||||
use Ardent\ParameterBundle\Entity\Parameter;
|
use Ardent\ParameterBundle\Entity\Parameter;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
|
||||||
|
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\NumberType;
|
use Symfony\Component\Form\Extension\Core\Type\NumberType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
use Symfony\Component\Form\Extension\Core\Type\TextType;
|
||||||
|
|
||||||
@ -33,10 +34,10 @@ class ParameterService
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $name
|
* @param string $name The name of the parameter in the format <group>_<parameter>
|
||||||
* @param bool $parse
|
* @param bool $parse Whether to parse embedded %parameter%'s
|
||||||
*
|
*
|
||||||
* @return string
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function get($name, $parse = true)
|
public function get($name, $parse = true)
|
||||||
{
|
{
|
||||||
@ -67,8 +68,8 @@ class ParameterService
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $name
|
* @param string $name The name of the parameter in the format <group>_<parameter>
|
||||||
* @param $value
|
* @param mixed $value
|
||||||
*/
|
*/
|
||||||
public function set($name, $value)
|
public function set($name, $value)
|
||||||
{
|
{
|
||||||
@ -101,8 +102,12 @@ class ParameterService
|
|||||||
case Configuration::TYPE_NUMBER:
|
case Configuration::TYPE_NUMBER:
|
||||||
$class = NumberType::class;
|
$class = NumberType::class;
|
||||||
break;
|
break;
|
||||||
|
case Configuration::TYPE_BOOL:
|
||||||
|
$class = CheckboxType::class;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add the group name in front of the parameter name
|
||||||
$value['name'] = sprintf('%s_%s', $groupName, $value['name']);
|
$value['name'] = sprintf('%s_%s', $groupName, $value['name']);
|
||||||
$value['type'] = $class;
|
$value['type'] = $class;
|
||||||
unset($value);
|
unset($value);
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
"description": "Simple bundle for storing parameters in a database",
|
"description": "Simple bundle for storing parameters in a database",
|
||||||
"type": "symfony-bundle",
|
"type": "symfony-bundle",
|
||||||
"require": {
|
"require": {
|
||||||
"doctrine/orm": "^2.7",
|
"doctrine/orm": "^2.0",
|
||||||
"symfony/form": "^5.0",
|
"symfony/form": "^5.0|^6.0",
|
||||||
"symfony/twig-bundle": "^5.0"
|
"symfony/twig-bundle": "^5.0|^6.0"
|
||||||
},
|
},
|
||||||
"autoload": {
|
"autoload": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
Reference in New Issue
Block a user