nineskeletor/src/Form/ConfigType.php

176 lines
6.6 KiB
PHP

<?php
namespace App\Form;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ConfigType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('submit',
SubmitType::class, [
'label' => 'Valider',
'attr' => ['class' => 'btn btn-success'],
]
);
$builder->add('id',
TextType::class,
['label' => 'Clé',
'disabled' => true, ]);
switch ($options['type']) {
case 'string':
$builder->add('value',
TextType::class,
['label' => 'Valeur',
'required' => (0 == $options['required'] ? false : true), ]);
break;
case 'boolean':
$choices = ['oui' => '1', 'non' => '0'];
$builder->add('value', ChoiceType::class,
['label' => 'Valeur',
'required' => (0 == $options['required'] ? false : true),
'choices' => $choices, ]);
break;
case 'integer':
$builder->add('value',
IntegerType::class, [
'label' => 'Valeur',
'attr' => ['min' => '0'],
'required' => (0 == $options['required'] ? false : true),
]
);
break;
case 'pourcentage':
$builder->add('value',
IntegerType::class, [
'label' => 'Valeur',
'attr' => ['min' => '0', 'max' => '100'],
'required' => (0 == $options['required'] ? false : true),
]
);
break;
case 'font':
$choices = [
'ABeeZee-Regular' => 'ABeeZee-Regular',
'Acme-Regular' => 'Acme-Regular',
'AlfaSlabOne-Regular' => 'AlfaSlabOne-Regular',
'Anton-Regular' => 'Anton-Regular',
'Baloo-Regular' => 'Baloo-Regular',
'CarterOne-Regular' => 'CarterOne-Regular',
'Chewy-Regular' => 'Chewy-Regular',
'Courgette-Regular' => 'Courgette-Regular',
'FredokaOne-Regular' => 'FredokaOne-Regular',
'Futura-Condensed-Extra-Bold' => 'Futura-Condensed-Extra-Bold',
'Grandstander' => 'Grandstander',
'Helvetica' => 'Helvetica',
'Justanotherhand-Regular' => 'Justanotherhand-Regular',
'Lato-Regular' => 'Lato-Regular',
'LexendDeca-Regular' => 'LexendDeca-Regular',
'LuckiestGuy-Regular' => 'LuckiestGuy-Regular',
'Overpass-Black' => 'Overpass-Black',
'PassionOne' => 'PassionOne',
'Peacesans' => 'Peacesans',
'Redressed' => 'Redressed',
'Righteous-Regular' => 'Righteous-Regular',
'Roboto-Regular' => 'Roboto-Regular',
'RubikMonoOne-Regular' => 'RubikMonoOne-Regular',
'SigmarOne-Regular' => 'SigmarOne-Regular',
'Signika-Regular' => 'Signika-Regular',
'Teko-Bold' => 'Teko-Bold',
'Theboldfont' => 'Theboldfont',
'Viga-Regular' => 'Viga-Regular',
];
$builder->add('value', ChoiceType::class,
['label' => 'Valeur',
'required' => (0 == $options['required'] ? false : true),
'choices' => $choices, ]);
break;
case 'editor':
$builder->add('value',
CKEditorType::class, [
'required' => (0 == $options['required'] ? false : true),
'config_name' => 'full_config',
'config' => [
'height' => 600,
'filebrowserUploadRoute' => 'app_ckeditor_upload',
],
]
);
break;
case 'role':
$choices = [
'NO_BODY' => 'NO_BODY',
'ROLE_USER' => 'ROLE_USER',
'ROLE_MASTER' => 'ROLE_MASTER',
'ROLE_MANAGER' => 'ROLE_MANAGER',
'ROLE_MODO' => 'ROLE_MODO',
];
$builder->add('value', ChoiceType::class,
['label' => 'Valeur',
'label_attr' => ['style' => 'margin-top:15px;'],
'attr' => ['class' => 'form-control'],
'required' => (0 == $options['required'] ? false : true),
'choices' => $choices, ]);
break;
case 'logo':
$builder->add('value', HiddenType::class);
break;
case 'header':
$builder->add('value', HiddenType::class);
break;
case 'image':
$builder->add('value', HiddenType::class);
break;
case 'color':
$builder->add('value',
TextType::class,
['label' => 'Valeur',
'attr' => ['class' => 'pick-a-color'],
'required' => (0 == $options['required'] ? false : true), ]);
break;
}
$builder->add('help',
TextareaType::class,
['label' => 'Aide',
'attr' => ['style' => 'height: 200px;'],
'required' => false,
'disabled' => true, ]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'App\Entity\Config',
'mode' => 'string',
'id' => 'string',
'type' => 'string',
'required' => 'string',
]);
}
}