Есть ли способ обойтись без имени пакета в частях системы как View или Routing?

Например, вместо этого я хочу использовать:

{% extends "SomeAppBundle::layout.html.twig" %}

Использовать это:

{% extends "layout.html.twig" %}

Или же:

    $router->add('index', new Route('/', array(
         '_controller' => 'SomeAppBundle:Default:index',
    )));

Заменить:

    $router->add('index', new Route('/', array(
         '_controller' => 'Default:index',
    )));

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

1
Yury 29 Янв 2013 в 23:11
2
Почему ты хочешь сделать это? Какая польза? "Проблема", почему это невозможно по умолчанию, заключается в том, что идентификаторы становятся неоднозначными: Default в Default:index пакете или контроллере? А где найти layout.html.twig? В [Thisbundle]::layout.html, [ThisBundle]:index:layout.html.twig, в ::layout.html.twig, ...?
 – 
KingCrunch
29 Янв 2013 в 23:14

1 ответ

Лучший ответ

В документации по symfony говорится:

Прежде чем начать, вам нужно создать пакет. В Symfony2 пакет похож на плагин, за исключением того, что весь код в вашем приложении будет находиться внутри пакета.

Если у вас есть редкий случай, когда у вас действительно только один пакет, вы можете рассматривать это как накладные расходы. Но и тогда есть преимущества:

  • Ваше приложение выглядит одинаково независимо от того, есть ли у него один или 10 пакетов.
  • Если вам нужен другой пакет, вам не нужно менять все («О, нам может понадобиться Backend»).
  • Ядру не нужно обрабатывать разные случаи

Я бы посоветовал вам работать с фреймворком, создавая один пакет, даже если он единственный. Вы действительно не почувствуете этого, когда создадите его, и это значительно упрощает работу.

1
Sgoettschkes 30 Янв 2013 в 00:55