2011-11-04 18 views
6

सिम्फनी 1 में हम टेम्पलेट पेज में एक क्रिया का उपयोग कर सकते हैं उदाहरण के लिए url_for('modulename/actionname') रूटिंग.इमल में कुछ भी लिखे बिना।symfony 2 symfony में url_for() फ़ंक्शन के बराबर 1

Symfony2 में यह कैसे संभव है?, यह है कि अगर मुझे रूटिंग में निर्दिष्ट किए बिना एक से अधिक क्रियाओं को एक्सेस करना है। यह AJAX का उपयोग करते समय उपयोगी है।

अग्रिम धन्यवाद मैं सही ढंग से अपने प्रश्न समझ में, आप कैसे एक मॉड्यूल का नाम और कार्य नाम पारित करके एक यूआरएल उत्पन्न कर सकते हैं, एक मार्ग नाम के बजाय आप पूछ रहे हैं

उत्तर

3

हैं। क्या वह सही है?

मुझे नहीं लगता कि यह सिम्फनी 2 में संभव है। यदि आप विधि Symfony\Component\Routing\Generator\UrlGenerator में देखें, तो आप देखेंगे कि यह पहले पैरामीटर के रूप में रूट का नाम अपेक्षा करता है। इसके अलावा, सिम्फनी 2 जेनेरिक मार्गों का मूल रूप से समर्थन नहीं करता है जो सिम्फनी 1 करता है (संदर्भ के लिए नीचे दिखाया गया है)।

default_index: 
    url: /:module 
    param: { action: index } 

default: 
    url: /:module/:action/* 

इन सामान्य मार्गों के बिना, आप वास्तव में इसके लिए मार्ग निर्धारित किए बिना/myModule/myAction तक नहीं पहुंच सकते हैं। और यह न भूलें कि सिम्फनी 2 अब बंडल का उपयोग करता है, जो इसे और जटिल करेगा।

तो आप जो भी कार्य करना चाहते हैं, उसके लिए आपको उनके लिए मार्ग लिखना होगा।

आदेश वास्तव में URL बनाने के लिए में ...
- एक नियंत्रक से: एक पूर्ण यूआरएल

+0

आपके महान उत्तर के लिए धन्यवाद। –

1

के लिए {{ path('_routeName') }} या {{ url('_routeName') }}: -: - एक टहनी टेम्प्लेट से $view['router']->generate($routeName);
एक PHP टेम्प्लेट से $this->generateUrl($routeName);
इसके अतिरिक्त Arms' words करने के लिए, यहां कुछ उदाहरण (पैरामीटर के साथ) कर रहे हैं:

:

मान लीजिए कि हमारे मार्ग में है

#routing.yml 
acme_demo_page: 
    path: /{page}.{_format} 
    defaults: 
    _controller: AcmeDemoBundle:Page:index 

हम इस प्रकार, इस मार्ग के लिए यूआरएल उत्पन्न करेंगे:

किसी भी नियंत्रक की कार्रवाई से:

$url = $view['router']->generate("acme_demo_page", array(
    "page" => "main", 
    "_format" => "html", 
)); 

किसी भी पीएचपी टेम्पलेट से:

$url = $this->generateUrl("acme_demo_page", array(
    "page" => "main", 
    "_format" => "html", 
)); 

किसी भी ट्विग टेम्पलेट से:

<a href="{{ path('acme_demo_page', {page:'main', _format:'html'}) }}">Home</a> 
<a href="{{ url('acme_demo_page', {page:'main', _format:'html'}) }}">Abs Home</a> 


उम्मीद है कि यह मदद करता है।
चीयर्स।

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