Как прописать контроллер, описано в документации Controller, но описан самый простой случай
Это означает, что вы можете вызывать ваш контроллер по адресу# This is also YML, so the comments above apply here
my_controller:
path: /url/{foo}
defaults: { _controller: service_name:method_name, foo: "bar" }
Код: Выделить всё
myforum/mycontroller
Код: Выделить всё
myforum/mycontroller/bla-bla
т.е.
, в первом случае $foo примет значение "bar" ( по умолчанию), во втором -значение "bla-bla"public function method_name($foo)
А как быть, если нужно вызывать разные функции контроллера, а не только method_name?
Это можно сделать, если дописать дополнительные требования к параметрам.
Допустим, у меня есть контроллер, которому я передаю айди форума и определяю функцию init, как дефолтную
Код: Выделить всё
alg_mycontroller_init_controller:
path: /mycontroller/{forum}
defaults: { _controller: alg.myext.controller.mycontroller:init }
requirements:
forum: \d+
далее по тому же пути я прописвываю другой маршрут
Код: Выделить всё
alg_mycontroller_action_controller:
path: /mycontroller/{action}
defaults: { _controller: alg.myext.controller.mycontroller:do_action, action:'bla-bla' }
Код: Выделить всё
myforum/mycontroller/10
линк
Код: Выделить всё
myforum/mycontroller/update_something