Добрый день!
Начинаю изучать фрейворк symfony сразу пошел с 4 версии, я так понял не сильно отличается от предыдущих версий.
Так вот щупаю роутинг, контроллеры, модели (entity).
И думаю надо бы на страницу вывести список тестовых товаров с разбивкой на пагинацию.
Пагинации встроенной нет в коробке, что опечалило меня немного, так как я долгое время сижу на Yii2 и там все это прекрасно реализовано. Да я знаю про бандлы и что их куча, но я попробовал поставить
https://github.com/KnpLabs/KnpPaginatorBundle и получил exception (
И тут назрел вопрос, написать самому, что очень просто 1 - 2 максимум класса.
Но как это правильно делать, где создавать эти файлы или надо прям создавать свой бандл и пилить туда два класса?
Так же возник вопрос с Entity, в каждом классе надо геттеры и сеттеры добавлять, но я сделал обертку для этого с __call но в какой директории её держать (я например просто создал папку
src/Common)?
Ещё меня подвела валидация, валидация самих entity работает отлично, но когда я хочу свой класс обернуть анотациями валидации то получаю ровным счетом ничего, не работает валидация.
приходится вручную указывать:
/**
* Rules validate
*
* @ToDo наверняка есть проверка на int, поискать
* @return array
*/
protected function rules()
{
return [
'limit' => [
new Assert\NotBlank(),
new Assert\Regex('/^\d+$/')
],
'count' => [
new Assert\NotBlank(),
new Assert\Regex('/^\d+$/')
],
'currentPage' => [
new Assert\NotBlank(),
new Assert\Regex('/^\d+$/')
]
];
}
и потом прогоняю через валидацию:
/**
* Validation
*
* @return bool
*/
protected function validate(array $config): bool
{
$rules = $this->rules();
$config = array_intersect_key($config, $rules);
$validator = Validation::createValidator();
foreach ($rules as $key => $rule) {
$valid = $validator->validate($config[$key] ?? null, $rule);
if (count($valid) > 0) {
$this->errors[] = $key . ': ' . $valid[0]->getMessage();
}
}
return empty($this->errors);
}
И тут тоже хочется создать свои модели с валидацией данных.
То есть получается самому надо многое писать, но для командной разработки это не очень хорошо.
Правильно ли я рассуждаю, я из-за своего не знания фреймворка могу так кучу всего своего написать, поэтому прошу подсказать пути решения, может где выложили самые популярные бандлы для 4 версии и если все таки мне захочется как-то упростить себе жизнь и написать пару оберток, то где мне их хранить, чтобы другие разрабы меня поняли?