<?php
namespace App\Form;
use App\Entity\Post;
use App\Entity\Grade;
use App\Entity\Domaine;
use App\Entity\Direction;
use App\Entity\Configuration;
use App\Repository\GradeRepository;
use App\Repository\DomaineRepository;
use App\Repository\DirectionRepository;
use Symfony\Component\Form\AbstractType;
use Symfony\UX\Dropzone\Form\DropzoneType;
use App\Repository\ConfigurationRepository;
use App\Validator\Constraints\IsEmailOrigin;
use FOS\CKEditorBundle\Form\Type\CKEditorType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Validator\Constraints\File;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\Length;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
class PostType extends AbstractType
{
private ConfigurationRepository $configurationRepository;
public function __construct(ConfigurationRepository $configurationRepository)
{
$this->configurationRepository = $configurationRepository;
}
/**
* Récupère l'objet Configuration en bdd
*
* @return Configuration
*/
public function getConfiguration(): Configuration
{
return $this->configurationRepository->findOneBy(['uuid' => Configuration::UNIQUE_UUID]);
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('titre', null, [
'label' => 'Titre<span class=\'text-danger\'>*</span>',
'label_html'=> true,
'required' => false,
'constraints' => [
new NotBlank([
'message' => 'Veuillez entrer un titre',
]),
],
'attr' => [
'placeholder' => 'Saisir un titre'
]
])
// ->add('description', CKEditorType::class, [
// 'config_name' => 'front_office',
// 'required' => false,
// 'label' => 'Contenu<span class=\'text-danger\'>*</span>',
// 'label_html'=> true,
// 'constraints' => [
// new NotBlank([
// 'message' => 'Veuillez entrer un contenu',
// ]),
// ],
// ])
->add('description', null , [
'required' => false,
'label' => 'Description<span class=\'text-danger\'>*</span>',
'label_html'=> true,
'attr' => [
'rows' => 6
],
'help' => 'Veuillez saisir une description en moins de ' . $this->getConfiguration()->getSizePost() . ' caractères',
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir une description',
]),
new Length([
'min' => 10,
'minMessage' => 'Veuillez saisir plus de 10 caractères',
'max' => $this->getConfiguration()->getSizePost(),
'maxMessage' => 'Veuillez saisir moins de ' . $this->getConfiguration()->getSizePost() . ' caractères',
])
],
])
// ->add('fichier', DropzoneType::class, [
// 'attr' => [
// 'placeholder' => 'Drag and drop un fichier',
// ],
// 'mapped' => false,
// 'required' => false,
// ])
// ->add('domaine', EntityType::class, [
// 'class' => Domaine::class,
// 'choice_label' => 'nom',
// 'label' => 'Domaine',
// 'placeholder' => 'Saisir un domaine',
// 'required' => false,
// 'query_builder' => function(DomaineRepository $er) {
// return $er->createQueryBuilder('p')
// ->orderBy('p.nom', 'ASC')
// ->andWhere('p.statut = :val')
// ->setParameter('val', 1)
// ;
// }
// ])
->add('hashtag', null, [
'label' => 'Hashtag',
'attr' => [
'placeholder' => 'Saisir votre hashtag',
],
'required' => false,
])
->add('fichier', FileType::class, [
'mapped' => false,
'label' => false,
'required' => false,
'attr' => [
'onchange' => 'loadFile(event)'
],
'constraints' => [
new File([
// 'mimeTypes' => [
// 'image/png',
// 'image/jpg',
// 'image/jpeg',
// 'image/gif',
// ],
//'mimeTypesMessage' => 'Extensions Autorisées : PNG JPG JPEG GIF'
])
]
])
;
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Post::class,
]);
}
}