[英]Symfony 2 Routing
我在項目中路由存在問題。
我有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找不到-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")
*/
class LanguageController extends Controller
{
/**
* @Route("/")
* @Template()
*/
public function indexAction()
{
// ...
}
/**
* @Route("/add")
* @Template()
*/
public function addAction()
{
// ...
}
// And so on
}
嘗試將尾部的斜線剝去:
resource: "@DomestosTranslatingBundle/Controller/"
成為:
resource: "@DomestosTranslatingBundle/Controller"
如在: 這里
如果那不起作用,請嘗試運行:
php app/console router:debug
看所有路線...
修改這個
translation:
resource: "@DomestosTranslatingBundle/Controller/"
type: annotation
在
translation:
resource: "@DomestosTranslatingBundle/Controller/LanguageController.php"
type: annotation
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.