2017-02-01 10 views
0

1つの質問が分かりません。ルートの例で使用するコントローラは Symfony 2または3 ParamConverter

/** 
* @Route("/news/comment-delete/{comment_id}", 
*  name = "blog_deleteComment" 
*) 
* @ParamConverter("comment", class="pfrechowiczBlogBundle:Comment", options={"id" = "comment_id"}) 
*/ 

と引数を与えHTMLで

がコントローラに

<a href="{{ path('blog_deleteComment', {'comment_id' : comment.id}) }}" class="blog_deleteComment" >Usuń</a> 

それが仕事OKですが、私が変更されたときに「_」に「 - 」それは働いていないと私は知りませんなぜ答えが見つかりませんでしたか?この問題はParamConverterの " - "を使用するURLをParamConverterの " - "と一緒に使用する必要がある場合にのみ有効です。

それは働いていない。この1例:

/** 
    * @Route("/news/comment-delete/{comment-id}", 
    *  name = "blog_deleteComment" 
    *) 
    * @ParamConverter("comment", class="pfrechowiczBlogBundle:Comment", options={"id" = "comment-id"}) 
    */ 

とHTMLコードを:

<a href="{{ path('blog_deleteComment', {'comment-id' : comment.id}) }}" class="blog_deleteComment" >Usuń</a> 

誰かがこれを説明してもらえますか?

+0

もしあなたのURLが次のように見えるなら、あなたの違いは:/ news/comment-delete/12345' – malcolm

+0

「働いていない」とはどういう意味ですか?意味のあるエラーメッセージが表示されますか、それとも単にURLを解決せずに自動的に失敗しますか? これはsymfonyが "DX Initiative"の用語を改善することができるからです。 – mblaettermann

+0

それはどのタイプのオブジェクトであるかを認識できないメッセージです –

答えて

3

$var - iableに相当するので、$ var-iableという名前の変数はありません。あなたは$ varから存在しない定数を減算した結果を望んでいません... PHPでは、減算と実際の変数を区別するのが混乱するので、変数にハイフンを付けることはできません。

$var_iableという名前の変数を作成することはできますが、あなたのルートの{}エンクロージャー間のものはあなたの名前に基づいて$変数に変換され、あなたのコントローラーメソッドに渡されます。 symfonyはハイフンがPHPで変数に許されていないという事実に対処しました。

tldr:ラクダケースまたはアンダースコアを使用します。

2

PHP構文では、変数名にハイフンを使用することはできません。

0

私はいつものルートは常にidはオプションです

<controller>/action/{id} 

のようなものを追跡しようとする必要があり、ルールに従うことをしようとしています。私は、ダッシュはアンダースコアの代わりにURLで使用する方が有利だと常に読んでいますが、私はその両方を避けようとしています。

* @Route("/news/comment/delete/{id}", 

ORより良い

* @Route("/comment/delete/{id}", 

「ニュース」はそれを残して、URLパターンにする必要がない場合:あなたのルートが良く、このようなものになるだろう。それ以外の場合は、ニュースセクションのように見ることができます。コメントコントローラには、 "id"で渡す "delete"というアクションがあります。あなたは "comment-id"を持っていましたが、あなたがコメントidを渡していることは明らかです。 RESTful URLに関するドキュメントを参照してください。

PHPでコーディングに関する質問に答えるには、PHPコードやMySQLデータベースでフィールドやテーブル名としてダッシュを使用しないことをお勧めします。コーディングの際には、アンダースコアを使用するほうがはるかに優れています。

関連する問題