【发布时间】:2014-09-17 11:38:41
【问题描述】:
如何设置 Symfony2 路由以允许更多可选路径。
目前路由文件是这样的,控制器包含3个动作来处理请求。
MediaFilmBundle_film:
pattern: /films
defaults: { _controller: MediaFilmBundle:Film:index }
MediaFilmBundle_Film_Genre:
pattern: /films/genre/{genre_slug}
defaults: { _controller: MediaFilmBundle:Film:genre }
MediaFilmBundle_Film_Source:
pattern: /films/source/{source_slug}
defaults: { _controller: MediaFilmBundle:Film:source }
这项工作,但如何才能做得更好或者是超越 Symfony2,是否可以做类似以下的事情,所以只有一个动作可以处理这一切。
MediaFilmBundle_film:
pattern: /films/genre/{genre_slug}/source/{source_slug}
defaults: { _controller: MediaFilmBundle:Film:index }
上述路由应符合以下所有条件:
/films
/films/genre/horror
/films/source/america
/films/genre/action/source/england
理想情况下,它不应与以下内容匹配,否则控制器可以将其重定向到标准格式genre/../source/..
/films/source/england/genre/action
可以像这样使用现有结构匹配路由:
MediaFilmBundle_Film_Genre_Source:
pattern: /films/genre/{genre_slug}/source/{source_slug}
defaults: { _controller: MediaFilmBundle:Film:genreSource }
这种方法的问题在于,随着添加的 slug 越多,路由就越多,需要的操作也越多。
- 1 slug = 2 路线和行动
- 2 条 slug = 4 条路线和行动
- 3 条 slug = 8 条路线和行动
- n 蛞蝓 = ...
【问题讨论】:
标签: symfony symfony-2.5