2012-08-16 11 views
38

मैं नीचे इस कोड है Symfony2 मार्ग में वैकल्पिक पैरामीटर कैसे हो सकता है: अगर मैं site/user/1 तो टाइप करें यह काम करता है अबमैं

/** 
* Lists all User entities. 
* 
* @Route("/{cid}",defaults={"cid" = null},name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{} 

, लेकिन अगर मैं site/user/ टाइप यह कहते हैं:

No route found 

कैसे क्या मैं यह कर सकता हूं कि दोनों मार्ग काम करते हैं? here

उत्तर

60

कोशिश प्रलेखन

user: 
    pattern: /site/user/{id} 
    defaults: { _controller: YourBundle:Default:index, id: 1 } 

देखें site/user पर जाने के लिए (कोई बैकस्लैश नोटिस:

33

अपने मार्ग विन्यास के लिए एक YML फ़ाइल का प्रयोग करें, और इस तरह अपने मार्ग मानकों में आईडी के लिए एक डिफ़ॉल्ट मूल्य जोड़ने अतं मै)।

आम तौर पर इसे काम करना चाहिए, मेरे पास अपेक्षाकृत समान विन्यास काम कर रहा है।

लेकिन बाकी सब विफल रहता है यदि आप हमेशा एक ही कार्रवाई के लिए कई मार्गों परिभाषित कर सकते हैं अर्थात

/** 
* Lists all User entities. 
* 
* @Route("/", name="user_no_cid") 
* @Route("/{cid}", name="user") 
* @Template() 
*/ 
public function indexAction($cid=null) 
{ 
+3

ओपी जाहिर नियंत्रक – phpguru

+7

में मार्ग एनोटेशन का उपयोग कर रहा है अभी तक उनके जवाब मुझे और कुछ अन्य लोगों के भविष्य के लिए – Andrew

+3

सूचना मदद की: 'pattern' कुंजी Symfony 3 –

5

तुम भी किसी GET पैरामीटर के साथ यह कर सकता है, उदाहरण के लिए

/** 
* @param Request $request 
* 
* @return Response 
*/ 
public function displayDetailAction(Request $request) 
{ 
    if ($courseId = $request->query->get('courseId')) {