РЕДАКТИРОВАТЬ : хорошо, может не ответить на вопрос, это просто длинный комментарий ...
Почему бы не использовать 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