|
@@ -2,12 +2,29 @@
|
|
|
|
|
|
namespace HostBundle\EventListener;
|
|
|
|
|
|
-use Sonata\AdminBundle\Event\ConfigureEvent;
|
|
|
use HostBundle\Traits\DHCPOptionTrait;
|
|
|
use HostBundle\Utils\DHCPOptions;
|
|
|
+use HostBundle\Services\HostService;
|
|
|
+use Sonata\AdminBundle\Event\ConfigureEvent;
|
|
|
+use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
|
|
|
+use Symfony\Component\Form\Extension\Core\Type\TextType;
|
|
|
|
|
|
class AdminDHCPOption
|
|
|
{
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @var HostService
|
|
|
+ */
|
|
|
+ private $hostService;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param HostService $hostService
|
|
|
+ */
|
|
|
+ public function __construct(HostService $hostService)
|
|
|
+ {
|
|
|
+ $this->hostService = $hostService;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* @param ConfigureEvent $event
|
|
@@ -21,14 +38,25 @@ class AdminDHCPOption
|
|
|
$mapper->end()->end();
|
|
|
}
|
|
|
$options = array(
|
|
|
- 'translation_domain' => 'HostBundle'
|
|
|
+ 'translation_domain' => 'HostBundle',
|
|
|
);
|
|
|
$mapper->tab('DHCP Option', $options)
|
|
|
->with('DHCP Option', $options);
|
|
|
+ $fieldOptions = [
|
|
|
+ 'required' => false,
|
|
|
+ ];
|
|
|
foreach (DHCPOptions::getConstants() as $opt) {
|
|
|
- $mapper->add($opt, 'text', array(
|
|
|
- 'required'=> false,
|
|
|
- ));
|
|
|
+
|
|
|
+ if ($opt == 'fixed_address') {
|
|
|
+ $freeIP = $this->hostService->getFreeFixedIP(false);
|
|
|
+ $fieldOptions['choices'] = array_combine($freeIP, $freeIP);
|
|
|
+ $mapper->add($opt, ChoiceType::class, $fieldOptions);
|
|
|
+ unset($fieldOptions['choices']);
|
|
|
+
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $mapper->add($opt, TextType::class, $fieldOptions);
|
|
|
}
|
|
|
$mapper->end()->end();
|
|
|
}
|
|
@@ -52,10 +80,7 @@ class AdminDHCPOption
|
|
|
->with('DHCP Option', $options);
|
|
|
foreach (DHCPOptions::getConstants() as $opt) {
|
|
|
if (!$mapper->has($opt)) {
|
|
|
- $mapper->add($opt, 'text', array(
|
|
|
- 'required'=> false,
|
|
|
- 'mapped' => false,
|
|
|
- ));
|
|
|
+ $mapper->add($opt);
|
|
|
}
|
|
|
}
|
|
|
$mapper->end()->end();
|