2012-06-06 8 views
5

// MySomethingController.phpFOSRestBundle प्राप्त URL में 'एस' कहते हैं

// look no s 
public function getSomethingAction($args) 
{ 
    ... 
} 

// routing.yml

my_something: 
    type:  rest 
    resource: Blah\Bundle\BlahBundle\Controller\MySomethingController 

चल:

php app/console router:debug 

आउटपुट:

[router] Current routes 
Name    Method  Pattern 
get_something  GET  /somethings/{args}.{_format} 

'कुछ' के बजाय मार्ग 'somethings' (एक 'के साथ बहुवचन) क्यों है?

क्या यह एक सेटिंग है जहां कहीं कहीं है? या यह उम्मीद है?

+0

प्रलेखन का कहना है कि सही है: https : //github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Resources/doc/5-automatic-route-generation_single-restful-controller.md, ('getUserAction' विधि देखें।) – eagleoneraptor

+0

@eagleoneraptor उन्होंने इसे कॉन्फ़िगर किया है उपयोगकर्ताओं का उपयोग 'एस' # एप/कॉन्फ़िगर/रूटिंग के साथ करें।yml उपयोगकर्ता, जब तक आप यह इंगित नहीं कर सकते कि यह कहां कहता है –

उत्तर

3

कोड में खुदाई के बाद:

संदेश यह है:

  • :

    private function generateUrlParts(array $resources, array $arguments) 
    { 
        $urlParts = array(); 
        foreach ($resources as $i => $resource) { 
         // if we already added all parent routes paths to URL & we have 
         // prefix - add it 
         if (!empty($this->routePrefix) && $i === count($this->parents)) { 
          $urlParts[] = $this->routePrefix; 
         } 
    
         // if we have argument for current resource, then it's object. 
         // otherwise - it's collection 
         if (isset($arguments[$i])) { 
          if (null !== $resource) { 
           $urlParts[] = 
            strtolower(Pluralization::pluralize($resource)) 
            .'/{'.$arguments[$i]->getName().'}'; 
          } else { 
           $urlParts[] = '{'.$arguments[$i]->getName().'}'; 
          } 
         } elseif (null !== $resource) { 
          $urlParts[] = strtolower($resource); 
         } 
        } 
    
        return $urlParts; 
    } 
    

    मैं एक मुद्दा खोल दिया है 210

उम्मीद है कि इस वैकल्पिक

3

यह बन जाएगा में टिकट @phillpafford द्वारा खोला के आधार पर एक अद्यतन जवाब है।

टिकट पर Ismith77 commented और मैंने सोचा कि बहुत अच्छी तरह से समझाया क्यों:

pluralization के बिना हम तरीकों के बीच संबंधों को जो जब # 52 को लागू करने, उदाहरण के लिए महत्वपूर्ण होने जा रहा है पता नहीं होता। इसके अलावा आरईएसटी का एक महत्वपूर्ण विचार है कि हमारे पास संग्रह में एक तत्व के लिए प्राप्त करें संग्रह के "subdir" में हो।

तो अगर आप ऐसा करेंगे "उचित" बाकी तो /member/{id}.{_format} अजीब तरह से नामित किया जाएगा, लेकिन यह वास्तव में गलत हो सकता है अगर अपने संग्रह ही नहीं तो भी/सदस्य {तहत रहते हैं। प्रारूप}।

यह सब का सारांश है .. समाधान सुविधा के मुकाबले ज्यादा नहीं है, वास्तव में लोगों को वास्तव में REST सिद्धांतों का पालन करने के लिए मजबूर करना है।

पुनश्च: हालांकि मैं कहना है कि यह खुद इस थोड़ा कष्टप्रद है पर जब आप "डाटा" जो बहुवचन है की तरह एक शब्द है चाहते हैं ...

+0

किसी कारण से यह DELETE क्रियाओं के लिए ठीक काम करता है: पोस्ट करें कोई भी/लेखक/रीफ्रेश किसी भी/auth/logout को हटाएं –