簡體   English   中英

Symfony 2路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM