Создание маршрутов сухим способом в Symfony2 - PullRequest
1 голос
/ 27 марта 2012

Я давно пользуюсь Symfony, но я новичок в Symfony2.После использования генератора CRUD для создания строительных лесов для модуля с именем MediaArea я отредактировал свою маршрутизацию, включив в нее следующее правило:

_welcome:
    pattern:  /
    defaults: { _controller: VNNPressboxBundle:MediaArea:new }

Когда я зашел на эту страницу в браузере, я получил эту ошибку:

Возникла исключительная ситуация во время рендеринга шаблона ("Route" mediaarea_create "не существует".)

Естественно, что при создании маршрута возникает ошибкадалеко.Вот маршрут:

mediaarea_create:
    pattern:  /foo
    defaults: { _controller: VNNPressboxBundle:MediaArea:create }

Так что я мог бы вручную создать все маршруты, которые мне нужны - mediaarea_create, mediaarea_index и т. Д., Но это было бы глупо.Есть ли способ сообщить Symfony, что у меня есть все эти mediaarea маршруты, которые мне нужны для работы?

1 Ответ

1 голос
/ 27 марта 2012

РЕДАКТИРОВАТЬ : хорошо, может не ответить на вопрос, это просто длинный комментарий ...

Почему бы не использовать abstract базовый контроллер вместо аннотаций?

abstract class AbstractCrudController extends Controller
{

    /**
     * @Route("/show/{slug}")
     * @Method("GET")
     * @Template
     */
    public function showAction($slug) { /* Do stuff */ }
}

class MediaController extends AbstractCrudController { }
class UserController  extends AbstractCrudController { }

Если вашим подклассам нужно другое поведение , вы всегда можете переопределить showAction() или , добавив любое действие , которое вы хотите. Тогда вам просто нужно импортировать MediaController и UserController в ваш routing.yml (только один импорт для каждого контроллера):

somename1:
    resource: "@AcmeHelloBundle/Controller/MediaController.php"
    type: annotation
    prefix: /media

somename2:
    resource: "@AcmeHelloBundle/Controller/UserController.php"
    type: annotation
    prefix: /user

Ваши маршруты автоматически становятся acme_hello_media_show и acme_hello_user_show. Отладка с помощью:

php app/console router:debug
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...