<?php
declare(strict_types=1);
/**
* @author Mehrez Labidi
*/
namespace App\Form\Type\DepotAnnonce;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Constraints\NotBlank;
class ValidatorRaisonCession implements EventSubscriberInterface {
/**
* @return string[]
*/
public static function getSubscribedEvents(): array {
return [
FormEvents::PRE_SET_DATA => 'onPreSetData',
FormEvents::PRE_SUBMIT => 'onPreSubmit'
];
}
/**
*
* @param FormEvent $event
* @return void
*/
public function onPreSetData(FormEvent $event): void {
$this->validation($event);
}
/**
*
* @param FormEvent $event
* @return void
*/
public function onPreSubmit(FormEvent $event): void {
$this->validation($event);
}
private function validation($event) {
$user = $event->getData();
$form = $event->getForm();
if (array_key_exists('id_raison_cession', $user)) {
/***************************************************************************************************************************/
/***** si Raison principale de la cession == Autre , id = 6 alors raison_cession devient obligatoire:******************/
/***** * Complements sur la raison de cession (Obligatoire si la raison de cession est autre)******************/
/********************************************************************************************************************************************/
if ($user['id_raison_cession'] == '6') {
$form->add('raison_cession', TextareaType::class,
[
"constraints" =>
[
new Assert\Length(['max' => 3000, 'maxMessage' => "Le champ Raison Cession est trop long"]),
new NotBlank(["message" => "Le champ Raison Cession est obligatoire"])
],
"attr" => [
"rows" => 8,
"placeholder" => "",
"autocomplete" => "off"
]
]
);
} else {
$form->add('raison_cession', TextareaType::class,
[
"constraints" =>
[
new Assert\Length(['max' => 3000, 'maxMessage' => "Le champ Raison Cession est trop long"])
],
"attr" => [
"rows" => 8,
"placeholder" => "",
"autocomplete" => "off"
]
]
);
}
}
}
}