2016-05-12 21 views
0

私は自分自身にSymfonyを教えています。ルーティングは意味をなさない。symfonyルーティングが意味を持たない

私はpostControllerクラスをいくつか持っています。もともとコマンドラインからの無駄なジェネレータが私にこれを与えてくれました。私が達成したい何

/** 
* Post controller. 
* 
* @Route("/post") 
*/ 
class PostController extends Controller 
{ 
    /** 
    * Lists all Post entities. 
    * 
    * @Route("/", name="post_index") 
    * @Method("GET") 
    */ 
    public function indexAction() 
    { 
     // 
    } 

    // 
} 

は、クラス自体から@Routeを削除することです。したがって、私はindexActionをホームページにして、私のクラスの他のすべてのアクションはまだ/postで始まります。たとえば、これは私が望むものです。

class PostController extends Controller 
{ 
    /** 
    * Lists all Post entities. 
    * 
    * @Route("/", name="homepage") 
    * @Method("GET") 
    */ 
    public function indexAction() 
    { 
     // 
    } 

    /** 
    * Finds and displays a Post entity. 
    * 
    * @Route("post/{id}", name="post_show") 
    * @Method("GET") 
    */ 
    public function showAction(Post $post) 
    { 
     // 
    } 

    // what I want for the showAction should count for all other Actions as well 
} 

変更を加えるとエラーになります。 「GET/POST /」

見つかり

Noルート誰かが私が間違っているとどのようにこの問題を修正するには何よ私に説明していただけます。私はそれが主要なものだとは思わない、それはおそらく私が見ていない小さなものだろう。私はそれをindexAction私の主なアクション、ユーザーがログインした後にウェブサイトが開くときのアクションを作ってみたい。ありがとう

答えて

0

あなたのルートの指定には{id}のパラメータが必要なので、"GET /post/"ルートが本当に必要です。あなたはあなたが両方/post/にアクセスすることができ、経路指定から{id}を削除して、あなたがidため/post/

  • パスのデフォルト値にアクセスすることができます
  • 例えば、以下の

    1. id値とアクセス/post/1のいずれかを実行する必要がありますおよび/post/1。何のルート"/post/" はあなたの例ではありませんので、あなたのルートの仕様が@Route("post/{id}", name="post_show", defaults={"id" = 1})
  • +0

    それはそのルートでも行動の問題でもありませんでした。私はそのことを知っています、私はちょうどここにあなたを示すアイデアのための何かをここに簡単に作った。しかし、ええ、わかっている、それは不明瞭な理解につながる可能性があります(それでも問題にそれを修正する)。これは 'indexAction()'の詳細です。何らかの理由で今動作していますが、私はキャッシュクリアを試行するのを忘れたと思います... –

    0

    よう"/post/"が見つかりませルートを見てはならないことを行うには、正しい

    でのみ"/""/post/{id}"

    ので、それは完璧になりTheresの私はyml表記と接頭辞を使用してクラスにバインドされていないようにすることをお勧めします

    の "YAML"タブを確認してください

    +0

    ''/post/''のルートはありませんが、なぜSymfonyには1つありますか?しかし、今何らかの理由で気にしないでください。私は何か他のものを続け、そのキャッシュをクリアした後、ルーティングが正しく動作することがわかります。したがって、クリアする必要のあるキャッシュだったと思います。私はそれを試みたと思った.... –

    関連する問題