2012-02-13 23 views
5

मैं यह जानने की कोशिश कर रहा हूं कि मेरे यूआरएल को डिजाइन करने का सबसे अच्छा तरीका क्या है।क्या सिम्फनी 2 आराम से यूआरएल को सही तरीके से संभालता है और क्या मुझे आराम से यूआरएल का उपयोग करना चाहिए?

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 कॉल) ... मेरी समस्या googling के बाद, मैं: तो यहाँ मैं अब तक क्या किया है है पता चला है कि सभी ब्राउज़रों में PUT और DELETE विधियां समर्थित नहीं हैं ... और भविष्य में गिरा दी जा सकती हैं।

तब मैंने पढ़ा कि रेल पर रूबी कुछ जादू करके सभी ब्राउज़रों पर इन दो तरीकों का समर्थन करती है।

तो मुझे आश्चर्य है, क्या सिम्फनी 2 पुट को संभालने और रूबी की तरह हट सकता है? और क्या मुझे आराम से यूआरएल का उपयोग करना चाहिए?

उत्तर

12

हां, symfony2 निश्चित रूप से विश्वसनीय अनुपालन है।

मैं रेल के लिए पता नहीं है, लेकिन Symfony2 अलग अलग तरीकों का उपयोग कर HTTP विधियों का पता लगाने संभालता है:

  • पहले php
  • तो
  • से REQUEST_METHOD मिलता है और केवल विधि == पोस्ट, से विधि हो जाता है X-HTTP-METHOD-OVERRIDE हैडर (करने के लिए _method अनुरोध पैरामीटर वापस आने)

ऐसा क्यों है POST पर इस chek बनाता है क्योंकि ब्राउज़र और कुछ नहीं नहीं भेज लेकिन GET या पोस्ट अनुरोध कर सकते हैं।

रेल और/या सिम्फनी 1 से अलग क्या है कि संबंधित विधियों के साथ लिंक या फॉर्म उत्पन्न करने में कोई सहायक नहीं है। आपके आवेदन पर एक वैध अनुरोध उत्पन्न करने के लिए आप पर निर्भर है।

पीएस: आपके रूटिंग के बारे में, आपको अपरकेस में _method पर अपनी आवश्यकताओं को लिखना चाहिए।

+0

आप क्या क्या मेरा विचार विधि "हटाएं" है, भले ही सिम्फनी खाता_डिलीट के बजाय खाता_read निष्पादित क्यों करें? –

+9

आपका ब्राउज़र कभी भी एक डेली अनुरोध नहीं भेजेगा भले ही आपके एचटीएमएल में '

'है। आप इसे '<इनपुट प्रकार = "छुपा" नाम = "_ विधि" मान = "हटाएं" />
' का उपयोग करके अनुकरण कर सकते हैं। – Florian

3

यदि आप रीस्टफुल सेवाओं को लागू करने की योजना बना रहे हैं, तो आप RestBundle पर एक नज़र डाल सकते हैं। उनके पास पहले से ही बहुत अच्छे यूआरएल नामकरण सम्मेलन हैं, जिनसे आप संभवतः सहमत हो सकते हैं, और कई अन्य चीजें जो विकास प्रक्रिया को सरल बनाती हैं।

और हाँ, सिम्फनी 2 पुट को संभालने और अनुरोधों को हटा सकता है।

1

बिंदु Symfony करते हैं या नहीं कर सकते हैं नहीं है, बिंदु कैसे "शोकहारा यूआरएल" वर्तमान उपलब्ध ब्राउज़रों के साथ संभाल ...

कुछ ब्राउज़र अभ्यस्त आप कुछ HTTP विधियों (पुट की तरह उपयोग करने की अनुमति है या हटाना), तो हाँ, एक अच्छा कार्यान्वयन मिलता है, का उपयोग करेगा, पोस्ट, डाल, हटाएँ और पैच, लेकिन आप के साथ मुद्दों मिल जाएगा कुछ उपयोगकर्ताओं :)

हमेशा की तरह ... ब्राउज़रों ...