2012-06-16 20 views
5

symfony2で注釈を使用してルートを定義しようとしています。私のバンドル名はPatentBundleです。しかし、私は注釈付きのsymfony2ルーティング

<?php 
namespace MunichInnovationGroup\PatentBundle\Controller; 

use MunichInnovationGroup\PatentBundle\Entity\Log; 

use MunichInnovationGroup\PatentBundle\Entity\UserPatent; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\Request; 
use JMS\SecurityExtraBundle\Annotation\Secure; 
use Symfony\Component\Security\Core\Exception\AccessDeniedException; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
use MunichInnovationGroup\PatentBundle\Entity\SvPatents; 
use MunichInnovationGroup\PatentBundle\Entity\PmPortfolios; 
use MunichInnovationGroup\PatentBundle\Entity\UmUsers; 
use MunichInnovationGroup\PatentBundle\Form\PatentType; 
use MunichInnovationGroup\PatentBundle\Entity\PmPatentgroups; 
use Symfony\Component\Security\Core\SecurityContext; 
use MunichInnovationGroup\PatentBundle\Util\SecurityHelper; 
use Exception; 

/** 
* Portfolio controller. 
* @Route("/portfolio") 
*/ 
class PortfolioController extends Controller { 

/** 
* Index action. 
* 
* @Route("/", name="portfolio") 
* @Method({"GET", "POST"}) 
* @Template("MunichInnovationGroupBundle:Portfolio:show.html.twig") 
*/ 
public function indexAction(Request $request) { 
     // method code goes here 
    } 
+0

ルータで「portfolio /」ルートを取得していますか:debug?または単に「/ portfolio」ですか?経路 "/ portfolio /"は "/ portfolio"とは異なります。 – sensorario

+0

末尾にスラッシュを付けずに何を追加しますか? '/ porfolio'? –

+0

両方で同じエラーが表示される –

答えて

9
# app/config/routing.yml 

MunichInnovationGroupPatentBundle: 

    resource: "@MunichInnovationGroupPatentBundle/Controller/DefaultController.php" 
    type:  annotation 
    prefix: /

のように/設定/のrouting.yml

MunichInnovationGroupPatentBundle: 
resource: "@MunichInnovationGroupPatentBundle/Controller/" 
type:  annotation 
prefix: /
defaults: { _controller: "MunichInnovationGroupPatentBundle:Default:index" } 

マイポートフォリオ・コントローラが見え

No route found for "GET /portfolio/ 

マイアプリのエラーを取得していますコントローラが持っている必要があります。

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template; 
+0

デフォルトのコントローラだけでなく、コントローラのディレクトリ全体をインポートします。ポートフォリオコントローラでエラーが発生しています –

+0

「コントローラは必要あります」セクションに感謝します。あなたが使用されていなくても、それらのすべてを含める必要があります。 – mattalxndr

+0

クラスレベルで@Methodを指定する方法はありますか? – hardik

1

あなたは開発効率向上環境にある場合は、routing_dev.ymlでのrouting.ymlをインポートチェック:

上記
# app/config/routing_dev.yml 

_main: 
    resource: routing.yml 
+0

私はすでにこれをしていましたが、動作しません。 –

+0

あなたのコードはうまくいくはずです... Simone Demo Gentiliの提案によると、 'app/console router:debug'を使ってあなたのアクティブなルートをすべて表示するはずです。 –

+0

私はaap/consoleを通してそれをチェックしました。私は2つのバンドルを持っています.1はバンドルで、もう1つはPatentBundleです。バンドルにはポートフォリオルートがあり、そのパスはv1/portfolioであるため、PatentBundleルートを他のルートではなく動作させたい。 –

-2

あなたのバンドルに次のコードを追加します。MunichInnovationGroup/PatentBundle/Resources/config/routing.yml

_admin_emailTemplate: 
    pattern: admin/emailTemplate 
    defaults: {_controller: DashboardEmailTemplateBundle:Default:index } 
requirements: { _method: GET | POST } 

バンドルのほんの一例です。大胆なテキスト「要件」を投稿するだけです。

関連する問題