2011-10-09 4 views
13

मेरे मार्ग (स्लग डैश शामिल हैं!):Symfony2 मार्ग regex में डैश के साथ स्लग कैसे अनुमति दें?

region: 
    pattern: /regione/{slug}-{id} 
    defaults: { _controller: SWAItaliaInCifreBundle:Default:region } 

टहनी टेम्पलेट में:

{% for r in regions %} 
    <a href='{{ path('region', { 'slug':r.slug, 'id':r.id }) }}'>{{ r.name }}</a> 
{% endfor %} 

मैं नियमित अभिव्यक्ति मिलान के बारे में एक त्रुटि हो रही है। प्रश्न: क्यों Symfony2 url में डैश की अनुमति नहीं देता है? मैं कैसे निर्दिष्ट कर सकता हूं कि मेरे मार्ग में डैश हैं (और यह बिल्कुल ठीक है)?

एक अपवाद एक टेम्पलेट (क्षेत्र "मार्ग के लिए" "पैरामीटर" स्लग "से मेल खाना चाहिए" [^/-] का प्रतिपादन के दौरान दिया गया है? + " (" वेल-डी-Aosta-Vallee -d-aoste "दिया)।")

उत्तर

16

Slashes डिफ़ॉल्ट मना द्वारा कर रहे हैं। आप डिफ़ॉल्ट आवश्यकताओं को बदलकर उन्हें सक्षम कर सकते हैं। आपके मामले में आईडी के लिए आवश्यकताओं को देना भी अच्छा होगा क्योंकि यह डैश से अलग है।

नीचे उदाहरण देखें।

region: 
    pattern: /regione/{slug}-{id} 
    defaults: 
     _controller: SWAItaliaInCifreBundle:Default:region 
    requirements: 
     slug: "[a-zA-Z1-9\-_\/]+" 
     id: "\d+" 
+0

एक पिछला स्लैश की अनुमति देने के लिए बस अपने पैटर्न के अंत में '/' जोड़ें। जैसे पैटर्न:/regione/{slug} - {id}/- तब इसके लिए कोई regex आवश्यकता नहीं है – Michael

+0

नीचे उत्तर सही है। इस कॉन्फ़िगरेशन में गलत संरचना और नोटेशन – coviex

+0

@ कोविएक्स दोनों का पुराना उत्तर/नोटेशन था। मेरा जवाब अपडेट किया गया। इसे पूरा करने के लिए –

5

यह रेगेक्स मेरे लिए काम करता है। ({आईडी} आवश्यकता माइकल ने सुझाव दिया)

region: 
    pattern: /regione/{slug}-{id} 
    defaults: { _controller: SWAItaliaInCifreBundle:Default:region } 
    requirements: 
    slug: "[a-zA-Z0-9-_/]+" 
    id: "\d+" 
+1

, आप आवश्यकताओं में जोड़ सकते हैं: आईडी: \ d + – Michael

1

अगर आप इस कोशिश तो वह ऐसा त्रुटि फेंक देगा: http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html में देखा आप का उपयोग करना चाहिए के रूप में

An exception has been thrown during the rendering of a template ("Parameter "slug" for route "routing_whatever" must match "[a-zA-Z0-9-_/]+" ("Topics/Virtualization Security" given).") in ... 

:

स्लग: "। +

संबंधित मुद्दे