Я строй службы (так называемой «dynamic_query»), который я использую, чтобы выставить все объекты к REST API, так что если у меня есть схема сущности, как эта:Включить одно и то же действие во всех контроллерах с динамическим маршрутом в Symfony?
[континент - (есть много) -> страна - (есть много) -> город]
я могу получить список стран (JSON), которые находятся в Африке скажем через URL:
http://www.example.com/country/api/?continent=africa
И даже для косвенных у связанных лиц, я все еще могу получить результаты: , например, перечислить все города, которые принадлежат странам, расположенным в Европе:
http://www.example.com/city/api/?continent=europe
Служба готова и апробирована, вот как я использую он в контроллере города в качестве примера:
/**
* City controller.
*
* @Route("city")
*/
class CityController extends Controller
{
/**
*
* @Route("/api/", name="city_api",options = { "expose" = true })
* @Method("GET")
*
*/
public function apiAction(Request $request)
{
$conditions=$request->query->all();
$results=$this->get("app.dynamic_query")
->narrow("city",$conditions);
return new Response($results);
}
}
Что я ищу прямо сейчас, чтобы найти способ «тиражировать» этот apiAction() ** с ** маршрут и сделать его доступный в каждом ntity в моей пачке, так что всякий раз, когда я достигаю:
http://www.example.com/entity/api/?arg_1=val_1&arg_2=val_2&arg_n=val_n
я получил точно такую же логику, показанную выше в apiAction(), за исключением $ ENTITY_NAME и название маршрута/URI должен изменить динамически приспосабливать запрос апи
Похоже, вы хотите, чтобы какой-то глобальный контроллер не находился в префиксе маршрута «город». В этом контроллере вы можете настроить маршрут с переменными частями, например '/ {entity}/api' для метода GET. Затем введите оператор switch или что-то, чтобы получить имя объекта на основе маршрутизации маршрута и изменить часть FROM из dql для использования этого имени сущности. – mickadoo