2012-02-13 8 views
5

私は自分のURLをデザインする最良の方法を理解しようとしています。 だからここに私はこれまでやっていることです:Symfony2は安らかなURLを正しく処理しますか?安らかなURLを使用する必要がありますか?

account_index: 
    pattern: /Accounts/ 
    defaults: { _controller: "CoreBundle:Account:index" } 
    requirements: { _method: get } 

account_create: 
    pattern: /Accounts/ 
    defaults: { _controller: "CoreBundle:Account:create" } 
    requirements: { _method: post } 

account_read: 
    pattern: /Accounts/{id} 
    defaults: { _controller: "CoreBundle:Account:show" } 
    requirements: { _method: get } 

account_update: 
    pattern: /Accounts/{id} 
    defaults: { _controller: "CoreBundle:Account:update" } 
    requirements: { _method: put } 

account_delete: 
    pattern: /Accounts/{id} 
    defaults: { _controller: "CoreBundle:Account:delete" } 
    requirements: { _method: delete } 

私がやったテストした後、私はその更新を実現し、削除動作しません(常にaccount_readを呼び出します)...私の問題をグーグルした後、私はPUTとDELETEメソッドはすべてのブラウザでサポートされていないことが判明しました。将来、削除される可能性があります。

私は、Ruby on Railsがすべてのブラウザでこれらの2つの方法をいくつかの魔法を使ってサポートしていることを読んでいます。

Symfony2はルビのようにPUTとDELETEを処理できますか? AND 安らかなURLを使用する必要がありますか?

答えて

12

はい、symfony2は確実にRESTfulに準拠しています。

私はレールのために知りませんが、Symfony2のは、さまざまな方法を使用してHTTPメソッドの検出を処理します。

  • 最初ならば、php
  • からREQUEST_METHODを取得し、唯一の方法== POSTからのメソッドを取得しますブラウザは何もなく、GETまたはPOSTリクエストを送信することはできませんのでX-HTTP-METHOD-OVERRIDEヘッダ(_methodリクエストパラメータにフォールバック)

それはPOSTにこのチェクを作る理由があります。

railsやsymfony1との違いは、対応するメソッドを使ってリンクやフォームを生成するヘルパーがないことです。アプリケーションへの有効なリクエストを生成するのはあなた次第です。

PS:ルーティングに関しては、大文字で_methodの要件を記述する必要があります。

+0

の問題を取得するあなたを行いますなぜ私のフォームメソッドが "DELETE"であっても、symfonyがaccount_deleteの代わりにaccount_readを実行する理由を知っていますか? –

+9

HTMLに '

'が含まれていても、ブラウザはDELETEリクエストを送信しません。これをエミュレートするには、
' – Florian

3

RESTfulサービスを実装する予定の場合は、RestBundleをご覧ください。彼らはすでにかなり良いURL命名規則を持っていて、おそらく同意することができますし、開発プロセスを簡素化する他の多くのものがあります。

はい、Symfony2はPUTとDELETEリクエストを処理できます。

1

ポイントは、ポイントは「RESTfulなURLは、」現在利用できるブラウザで処理する方法で、symfonyはやるか、できないことができるものではありません...

一部のブラウザでは、PUTのようないくつかのHTTPメソッドを(使用できるようにする習慣または削除)、そうそう、良い実装は、GETを使用しますPOSTは、PUT、DELETE、およびPATCHができますが、一部のユーザー:)

いつものように...ブラウザ...

関連する問題