2015-09-16 3 views
3

Я новичок в Symfony, но мне нравится знакомство с ним (и многие из концепций, стоящих за ним). MVC довольно новичок для меня в плане того, как я сталкиваюсь с этим в Symfony.Где разместить массивы для хранения общих данных в Symfony

Вопрос в том, что если у меня есть простой массив часто используемых данных, которые, как я полагаю, не обязательно входят в таблицу базы данных, где я должен хранить это. Это сущность? Должен ли я хранить его в папке «Должен ли я положить его в контроллер? Где-нибудь еще?

Я говорю конкретно о чем-то вроде массива US States, который я могу использовать для выпадающего списка. Сейчас мне нужно создать сущность и сохранить их в базе данных, но хотелось бы знать, есть ли лучший/предпочтительный способ сделать это.

В мои процедурные дни я бы сохранил файл под названием «includes/arrays.php» и потянул его, когда мне понадобился один из них.

Thanks

+0

Где вы хотите на самом деле, что лучше для вас, если вы хотите, чтобы позволить пользователям редактировать данные, базы данных является правильное место. – malcolm

ответ

0

Это зависит. Я бы выбрал такой тип данных в базе данных. Предположим, в будущем у вас будет бэк-офис, который обновляет данные.

Или вы могли бы использовать config files. Например, в yml-формате массивы легко определить.

0

Если вы хотите использовать эти данные с другими объектами, например, состояние будет связано с объектом Adress, я бы придерживался Entities, потому что он упрощает работу и работу с отношениями (я предполагаю, что вы используете какой-то ORM например, Доктрина).

Если вы не хотите использовать эти данные с другими объектами, возможно, вы захотите их жестко закодировать во все шаблоны. http://symfony.com/doc/current/cookbook/templating/global_variables.html (Я предположил, что вы используете Twig).

Аналогичный вопрос был дан ответ здесь: Where to define static array related to an entity in symfony2 ?

0

Как @foxtrot сказал, любые данные, которые изменчива должны храниться в базе данных, просто так вам не придется редактировать любой код, когда происходит изменение.

Во-первых, я бы создал Entity для общих данных, а затем я использовал бы Fixtures для создания записей в базе данных при развертывании вашего кода.

Таким образом, вы разрешаете позднее редактирование через любые формы или phpMyAdmin, но вы также можете записать значения по умолчанию в PHP-класс, поэтому вам не нужно вручную вводить их все в базу данных.

См Symfony - DoctrineFixturesBundle

Смежные вопросы