Created
December 3, 2018 07:24
-
-
Save BerezhniyDmitro/1ee4970851204ed0aaca6a9cef69e262 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
namespace App\Models\CodeBlocks\Validator; | |
use LogicException; | |
use Symfony\Component\Validator\Constraints\Choice; | |
use Symfony\Component\Validator\Constraints\Collection; | |
use Symfony\Component\Validator\Constraints\Length; | |
use Symfony\Component\Validator\Constraints\NotBlank; | |
use Symfony\Component\Validator\Constraints\Regex; | |
/** | |
* Class CodeBlockConstraintMap | |
*/ | |
class CodeBlockConstraintMap | |
{ | |
/** | |
* @var array массив ограничений валидации | |
*/ | |
private $mapConstraint; | |
/** | |
* CodeBlockConstraintMap constructor. | |
*/ | |
public function __construct() | |
{ | |
$this->mapConstraint = [ | |
'certificates' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Сертификаты отсутствует название']), | |
new Length(['maxMessage' => 'Блок Сертификаты превышено максимально допустимое количество символов', 'max' => 255]), | |
] | |
]), | |
'cases_carousel' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Кейсы отсутствует название']), | |
new Length(['maxMessage' => 'Блок Кейсы превышено максимально допустимое количество символов', 'max' => 255]), | |
] | |
]), | |
'clients_carousel' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Клиенты отсутствует название']), | |
new Length(['maxMessage' => 'Блок Клиенты превышено максимально допустимое количество символов', 'max' => 255]), | |
] | |
]), | |
'reviews_carousel' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Отзывы отсутствует название']), | |
new Length(['maxMessage' => 'Блок Отзывы превышено максимально допустимое количество символов', 'max' => 255]), | |
] | |
]), | |
'about_us' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок О нас отсутствует название']), | |
new Length(['maxMessage' => 'Блок О нас превышено максимально допустимое количество символов', 'max' => 255]), | |
] | |
]), | |
'video' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок О нас отсутствует название']), | |
new Length(['maxMessage' => 'Блок О нас превышено максимально допустимое количество символов', 'max' => 255]), | |
], | |
'image' => [ | |
new NotBlank(['message' => 'Блок Видео, картинка отсутствует']), | |
new Regex([ | |
'pattern' => '~^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|jpeg|gif|png)$~', | |
'message' => 'Блок Видео, картинка неверного формата' | |
]), | |
], | |
'video' => [ | |
new NotBlank(['message' => 'Блок Видео, отсутствует ссылка']), | |
] | |
]), | |
'client_dashboard' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Про ЛК отсутствует название']), | |
new Length(['maxMessage' => 'Блок Про ЛК превышено максимально допустимое количество символов', 'max' => 255]), | |
], | |
'image' => [ | |
new NotBlank(['message' => 'Блок Про ЛК, картинка отсутствует']), | |
new Regex([ | |
'pattern' => '~^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:jpg|jpeg|gif|png)$~', | |
'message' => 'Блок Видео, картинка неверного формата' | |
]), | |
], | |
'html' => [ | |
new NotBlank(['message' => 'Блок Про ЛК, отсутствует текст']), | |
new Length(['maxMessage' => 'Блок Про ЛК превышено максимально допустимое количество символов', 'max' => 10000]), | |
] | |
]), | |
'html' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'HTML блок отсутствует название']), | |
new Length(['maxMessage' => 'HTML блок превышено максимально допустимое количество символов', 'max' => 255]), | |
], | |
'template_type' => [ | |
new Choice([ | |
'choices' => ['html_blue', 'html_white'], | |
'message' => 'Неверное значение фона подложки' | |
]) | |
], | |
'html' => [ | |
new NotBlank(['message' => 'Блок Про ЛК, отсутствует текст']), | |
new Length(['maxMessage' => 'Блок Про ЛК превышено максимально допустимое количество символов', 'max' => 10000]), | |
] | |
]), | |
'payment_schemes' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Схемы Оплат отсутствует название']), | |
new Length(['maxMessage' => 'Блок Схемы Оплат превышено максимально допустимое количество символов', 'max' => 255]), | |
], | |
'html' => [ | |
new NotBlank(['message' => 'Блок Схемы Оплат, отсутствует текст']), | |
new Length(['maxMessage' => 'Блок Схемы Оплат превышено максимально допустимое количество символов', 'max' => 10000]), | |
] | |
]), | |
'stages_action_plan' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Этапы/план действий отсутствует название']), | |
new Length(['maxMessage' => 'Блок Этапы/план действий превышено максимально допустимое количество символов', 'max' => 255]), | |
], | |
'html' => [ | |
new NotBlank(['message' => 'Блок Этапы/план действий, отсутствует текст']), | |
new Length(['maxMessage' => 'Блок Этапы/план действий превышено максимально допустимое количество символов', 'max' => 10000]), | |
] | |
]), | |
'offer' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Мы предлагаем отсутствует название']), | |
new Length(['maxMessage' => 'Блок Мы предлагаем превышено максимально допустимое количество символов', 'max' => 255]), | |
], | |
'html' => [ | |
new NotBlank(['message' => 'Блок Мы предлагаем, отсутствует текст']), | |
new Length(['maxMessage' => 'Блок Мы предлагаем превышено максимально допустимое количество символов', 'max' => 10000]), | |
] | |
]), | |
'presentation' => new Collection([ | |
'title' => [ | |
new NotBlank(['message' => 'Блок Презентация отсутствует название']), | |
new Length(['maxMessage' => 'Блок Презентация превышено максимально допустимое количество символов', 'max' => 255]), | |
], | |
'presentation_link' => [ | |
new NotBlank(['message' => 'Блок Презентация, отсутствует ссылка']), | |
new Regex([ | |
'pattern' => '~^https?://(?:[a-z0-9\-]+\.)+[a-z]{2,6}(?:/[^/#?]+)+\.(?:pdf)$~', | |
'message' => 'Блок Презентация, ссылка неверного формата. Верный формат pdf' | |
]), | |
], | |
]), | |
]; | |
} | |
/** | |
* Метод получает правила валидации по названию блока кода | |
* | |
* @param string $typeCodeBlock тип блока кода | |
* @return mixed | |
*/ | |
public function getConstraintByKey($typeCodeBlock) | |
{ | |
if (empty($this->mapConstraint[$typeCodeBlock])) { | |
throw new LogicException('Такой тип блока кода отсутствует'); | |
} | |
return $this->mapConstraint[$typeCodeBlock]; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment