在StackOverflow上,对于一个问题,您将在url中看到以下内容:
https://stackoverflow.com/questions/{question.id}/{question.slug}
如果您删除或更改了该条,您将被重定向到包含正确的条的URL,因为只有question.id
才需要匹配,所以全部完成。我正在尝试在Symfony项目中实现相同的目标。我已经走得足够远了,以至于输入(或忽略)的弹头对路线没有任何影响。我唯一没有实现的就是向用户发送(或显示)完整正确的子弹。
这是我的代码:
/**
* @Route("/{id}/{slug}", name="entity_show", defaults={"slug" = null})
*/
public function showEntity(Request $request, $id, EntityRepository $entityRepository)
{
//.....rest of code here
简而言之,我存档的内容是可以输入任何段,也可以完全不输入段,但是尚未显示对属于{id}
的段的重定向。
答案 0 :(得分:1)
最初,您可以使用ParamConverter来获得Question对象,以防万一the弹错误地将其重定向到正确的路由:
/**
* @Route("/{id}/{slug}", name="entity_show", defaults={"slug" = null})
*/
public function showEntity(Request $request, Question $question, $slug, EntityRepository $entityRepository)
{
if ($question->getSlug() !== $slug) {
return $this->redirectToRoute('entity_show', ['id' => $question->getId(), 'slug' => $question->getSlug()]);
}
....
do whatever you need