Я новичок в Symfony, но мне нравится знакомиться с ним (и многими концепциями, стоящими за ним). MVC довольно нов для меня с точки зрения того, как я сталкиваюсь с этим в Symfony.
Мой вопрос заключается в том, что если у меня есть простой массив часто используемых данных, который, я думаю, не обязательно принадлежит к таблице базы данных, где я должен хранить это. Это сущность? Должен ли я хранить его в Должен ли я поместить его в контроллер? Где-нибудь еще?
Я говорю конкретно о чем-то вроде массива штатов США, который я мог бы использовать для включения выпадающего списка. Прямо сейчас мне нужно построить сущность и сохранить ее в базе данных, но я хотел бы знать, есть ли лучший / предпочтительный способ сделать это.
В мои процедурные дни я сохранял файл с именем «includes / arrays.php» и извлекал его, когда мне был нужен один из них.
Спасибо
Если вы хотите использовать эти данные с другими сущностями, например, State будет связан с объектом Adress, я бы остановился на Entities, потому что это облегчает реализацию и работу с отношениями (я предполагаю, что вы используете какой-то ORM, например, Doctrine).
Если вы не хотите использовать эти данные с другими объектами, возможно, вы хотели бы как-то жестко закодировать их во все шаблоны. http://symfony.com/doc/current/cookbook/templating/global_variables.html (Я предполагал, что вы используете Twig).
На аналогичный вопрос ответили здесь:
Где определить статический массив, связанный с сущностью в symfony2?
Это зависит. Я бы предпочел иметь такие данные в базе данных. Предположим, что в будущем у вас будет бэк-офис, который обновляет данные.
Или вы могли бы использовать конфигурационные файлы. Например, в формате yml массивы легко определить.
Как сказал @foxtrot, любые изменяемые данные должны храниться в базе данных, чтобы вам не приходилось редактировать какой-либо код при изменении.
Сначала я создал бы Entity для общих данных, а затем я использовал бы Fixtures для генерации записей в базе данных при развертывании вашего кода.
Таким образом, вы разрешаете последующее редактирование через формы или phpMyAdmin, но вы также можете записать значения по умолчанию в класс PHP, чтобы вам не приходилось вручную вводить все их в базу данных.
Увидеть Symfony — DoctrineFixturesBundle