【发布时间】:2014-05-29 12:26:31
【问题描述】:
我的项目中的路由有问题。
我有 2 个控制器,一个是
Domestos\TranslatingBundle\ProjectController.php
p
第二个是
Domestos\TranslatingBundle\LanguageController.php
我还设置了带有注释的路由。
routing.yml:
# import routes from a controller directory
translation:
resource: "@DomestosTranslatingBundle/Controller/"
type: annotation
ProjectController 工作得很好,路由器工作得很好。
问题是,我的 LanguageController 无法正常工作。控制器应该没问题,但总是当我用注释中预定义的路由调用 URL 时,它会抛出错误
找不到“GET /language/”的路由 404 Not Found - NotFoundHttpException 1 链接异常:
ResourceNotFoundException »
LanguageController.php 看起来像这样:
<?php
namespace Domestos\TranslatingBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Domestos\TranslatingBundle\Entity\Language;
class LanguageController extends Controller
{
/**
* @Route("/language")
* @Template()
*/
public function indexAction()
{
$languages = $this->getDoctrine()->getRepository('DomestosTranslatingBundle:Language')->findAll();
return $this->render('DomestosTranslatingBundle:Language:index.html.twig', array(
'languages' => $languages,
));
}
/**
* @Route("/language//add")
* @Template()
*/
public function addAction()
{
$language = new Language();
$language->setTitle('Jazyk')
->setCode('Skratka');
$form = $this->createFormBuilder($language)
->add('title', 'text')
->add('code', 'text')
->add('save', 'submit')
->getForm();
$form->handleRequest($request);
if($form->isSubmitted())
{
$em = $this->getDoctrine()->getManager();
$em->persist($language);
$em->flush();
}
return $this->render('DomestosTranslatingBundle:Language:add.html.twig', array(
'form' => $form->createView(),
));
}
/**
* @Route("/language/edit/{id}")
* @Template()
*/
public function editAction($id)
{
$language = $this->getDoctrine->getRepository('DomestosTranslatingBundle:Language')->find($id);
$form = $this->createFormBuilder($language)
->add('title', 'text')
->add('code', 'text')
->add('save', 'submit')
->getForm();
$form->handleRequest($request);
if($form->isSubmitted())
{
$em = $this->getDoctrine()->getManager();
$em->persist($language);
$em->flush();
}
return $this->render('DomestosTranslatingBundle:Language:edit.html.twig', array(
'form' => $form->createView(),
));
}
/**
* @Route("/language/delete/{id}")
* @Template()
*/
public function deleteAction($id)
{
$language = $this->getDoctrine->getRepository('DomestosTranslatingBundle:Language')->find($id);
$em = $this->getDoctrine()->getManager();
$em->remove($language);
$em->flush();
return new Response('Language deleted: ' . $language->getCode());
}
}
问题是,为什么这个控制器不工作?我需要完成项目,这真的很烦人。
【问题讨论】:
-
双斜线
@Route("/language//add")? -
工作。谢谢。没有意识到错字...