我的问题是,每当我尝试在控制器内使用“ redirectToRoute”方法时,尽管在控制器内定义了这两个路由,但它始终找不到路由“ / group-b”。这是我收到的错误:
无法为命名路由“ / group-b”生成URL,因为该路由不存在。
检查调试路由器后,我发现该路由确实存在,并且当我通过URL栏将路由更改为组b(http://localhost:8000/group-b)时,仍然可以手动找到该路由。
这是我的控制人:
use App\Entity\GroupATask;
use App\Form\GroupAType;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class GroupStageController extends AbstractController
{
/**
* @Route("/group-a", name="groupA")
*/
public function GroupA(Request $request, EntityManagerInterface $entityManager)
{
$groupATask = new GroupATask();
$groupAForm = $this->createForm(GroupAType::class, $groupATask);
$groupAForm->handleRequest($request);
if($groupAForm->isSubmitted() && $groupAForm->isValid()){
$entityManager->persist($groupATask);
$entityManager->flush();
$this->redirectToRoute("/group-b");
}
return $this->render('group_stage/groupA.html.twig', [
"group_a_form" => $groupAForm->createView()
]);
}
/**
* @Route("/group-b", name="groupB")
*/
public function GroupB()
{
return $this->render('group_stage/groupB.html.twig');
}
}
这是我的调试路由器(显示A组+ B组的两条路由
-------------------------- -------- -------- ------ ----------------------------------
Name Method Scheme Host Path
-------------------------- -------- -------- ------ -----------------------------------
groupA ANY ANY ANY /group-a
_twig_error_test ANY ANY ANY /_error/{code}.{_format}
_wdt ANY ANY ANY /_wdt/{token}
_profiler_home ANY ANY ANY /_profiler/
_profiler_search ANY ANY ANY /_profiler/search
_profiler_search_bar ANY ANY ANY /_profiler/search_bar
_profiler_phpinfo ANY ANY ANY /_profiler/phpinfo
_profiler_search_results ANY ANY ANY /_profiler/{token}/search/results
_profiler_open_file ANY ANY ANY /_profiler/open
_profiler ANY ANY ANY /_profiler/{token}
_profiler_router ANY ANY ANY /_profiler/{token}/router
_profiler_exception ANY ANY ANY /_profiler/{token}/exception
_profiler_exception_css ANY ANY ANY /_profiler/{token}/exception.css
groupB ANY ANY ANY /group-b
-------------------------- -------- -------- ------ -----------------------------------
我无法弄清楚为什么它在定义和存在时不会重定向到路由“ / group-b”。任何帮助将不胜感激。
答案 0 :(得分:1)
如Vadim所述,将代码更改为:
return $this->redirectToRoute("groupB");
答案 1 :(得分:0)
方法redirectToRoute
接受路由名称,而不是uri。