Структура папок Symfony2, приоритеты и порядок

Я пришел из мира ASP.NET MVC, где моя структура папок будет:

+ProjectName
-App_Data (databases, xml's and such data)
-App_Start (function bundles, routes, etc.)
-Controllers
-SampleController.cs
-Models (though I'd usually call models from other projects)
-Views
-Sample
-index.cshtml
-Scripts
web.config
etc.

Я пытаюсь войти в PHP Symfony2, прямо сейчас. Я прочитал некоторую документацию и прочитал учебник или два, ни один из которых не отвечает на этот один вопрос, который я продолжаю задавать себе.

Насколько я понимаю, пакеты представляют собой части веб-приложения, которые я могу использовать в текущем проекте, а также в других проектах, которые я делаю. Они, как один, выполняют определенную функцию веб-приложения.

Я использовал команду для генерации пакета:

$ php app/console generate:bundle --namespace=Sample/FooBundle --format=yml

и у меня есть несколько папок и подпапок и еще много чего, а также папка Resource, что меня смутило.

Итак, что сначала читает веб-приложение? Как контроллер ищет нужный вид? Сначала идет

src/Sample/FooBundle/Resources/views/Default/index.html.twig

или это идет к

app/Resources/views/default/index.html.twig

Разумно ли хранить представления в связках или в «глобальной» папке приложения? Я также заметил, что внутри пакета создаются конфигурации (которые, я подозреваю, имеют более высокую иерархию, чем «глобальные» приложения). Например, связка AppBundle не имеет своих собственных представлений и конфигураций, что заставило меня задуматься о том, разумно ли вообще создавать представления внутри связок.

Если бы я мог получить простой ответ или хотя бы ресурс об этом, который мог бы объяснить причину всего этого, я был бы очень благодарный.

4

Решение

По большому счету, все, что находится в Пакете, может быть переопределено «глобальными» настройками и ресурсами приложения. Вероятно, наиболее полезными ресурсами для понимания этого являются записи поваренной книги. Как переопределить любую часть пакета а также Как использовать Наследование пакетов для переопределения частей пакета.

Чтобы ответить на ваш вопрос о том, следует ли сохранять представления в пакете или глобальной папке — все зависит от того, имеют ли представления смысл в самом пакете. Если что-то будет использоваться в нескольких пакетах (например, базовый шаблон макета), тогда это имеет больше смысла в app папка.

С точки зрения вашей структуры комплектации — это изменилось с тех пор, как я начал работать с Symfony, поэтому я не авторитет в этом. В настоящее время тенденция выглядит так: если вы можете разделить функциональность на отдельный пакет, сделайте это, в противном случае вставьте его в AppBundle это по умолчанию создается установщиком Symfony. Возможно, вы захотите взглянуть на Лучшие практики для многоразовых комплектов для дальнейшей информации.

Вполне возможно иметь несколько пакетов приложений с такими вещами, как сущности и ресурсы, которые хранятся вне пакетов, например

src/Company
Bundle/
ManagerBundle/
FrontendBundle/
Entity/
Event/

Независимо от того, делаете ли вы это, зависит только от вас — от вашего кода, от вашей организации, за исключением нескольких конкретных случаев, Symfony как платформа не будет жаловаться на это.

Что касается конфигураций комплекта, которые находятся выше в «иерархии», чем глобальные, — обычно нет, хотя это связано с компонентом DI. Это много, чтобы разобраться, но Поваренная книга Раздел «Конфигурация» — отличное место для начала.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]