Я хотел бы знать, где хранить какой-то пользовательский код, связанный с формой. Я пишу приложение Symfony, в котором пользователь может добавить свою категорию (используя форму, конечно). Когда пользователь добавляет свою категорию, код формы внутри контроллера проверяет, является ли эта форма отправленной и действительной. Если да, то в базу данных добавляются категория пользователя и URI, который создается на основе имени категории . Теперь весь этот код и логика c хранятся в CategoryController внутри addCategory () action. Точно так же:
public function addCategory(Request $request): Response
{
// create the whole form inside CategoryType class
$form = $this->createForm(CategoryType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$categories = $form->getData();
$categories->setName(preg_replace(
'#\s+#', ' ', $categories->getName()));
$categories->setCategoryUri(strtolower(str_replace(
' ', '-', $categories->getName())));
$this->getDoctrine()->getRepository(Categories::class)
->addOneCategory($categories);
return $this->redirectToRoute('flashcard_index');
}
return $this->render('category/add_category.html.twig', [
'form' => $form->createView(),
'slug' => 'Add category'
]);
}
Как вы видите внутри оператора if, есть код, о котором я пишу. Сначала пользовательские данные сохраняются в переменную $categories
, затем я удаляю более одного пробела, используя preg_replace()
(если пользователь вводит более одного пробела в поле формы), и, наконец, я создаю URI на основе имени категории, используя * Функции 1012 * и str_replace()
.
Проблема в том, что я не знаю, является ли хорошей практикой хранение вышеупомянутой логики c внутри действия контроллера, а если нет, где хранить эти логики c ? Не могли бы вы ответить мне на этот вопрос? Заранее благодарю за все ответы!