2012-10-18 11 views
5

में नियंत्रक को इनपुट मानों की गतिशील संख्या को कैसे पास किया जाए, Symfony2.1 में नियंत्रक होने का मानना ​​है जो संख्यात्मक मानों की एक सूची प्राप्त करता है, उदा।Symfony2.1

public function showAction($el1, $el2, $el3){...} 

मैं कहाँ लगता है कि मैं वें $ एली एक संख्यात्मक आईडी है।

{% render 'AcmeBundle:BundleName:show' with {'el1':'1', 'el2':'5', 'el3':'7'} %} 

यह एक अनूठा मूल्य कि समूहों उन सब (एक सरणी की तरह) पारित करने के लिए अच्छा होगा, उदाहरण के लिए: इसलिए, मैं एक टहनी टेम्पलेट में है कि नियंत्रक के रूप में निम्नानुसार प्रस्तुत करना होगा

public function showAction($els){...} 

जहां $ एल्स मूल्यों की एक सरणी है। बेशक मुझे लगता है कि यह संभव नहीं है, भले ही नियंत्रक एक ट्विग टेम्पलेट के अंदर प्रस्तुत किया गया हो।

इनपुट को थोड़ी अधिक गतिशील करने के लिए एकमात्र तरीका यह है कि एक अद्वितीय मूल्य पारित करना है जो सभी आईडी-इनपुट मानों को समूहित करता है और उन्हें टोकन से अलग करता है। उदा .:

{% render AcmeBundle:BundleName:show with {'els': '1_5_7'} %} 

क्या यह सबसे अच्छा तरीका है या मैं बेहतर कर सकता हूं?

उत्तर

0

क्यों न केवल तर्कों की एक सरणी पास करें?

नियंत्रक:

public function showAction(array $els) 
{ 
    // ... 

    return ['els' => $els]; 
} 

दृश्य:

{% render 'AcmeBundle:Demo:show' with {'els': {'el1': 1, 'el2': 5, 'el3': 7}} %} 

या यदि आप एक अंकीय अनुक्रमित सरणी पास करना चाहते हैं:

{% render 'AcmeBundle:Demo:show' with {'els': [1, 5, 7]} %} 

इस तरह आप में पारित कर सकते हैं आप तर्कों की किसी भी संख्या चाहते हैं।

+0

यह सच है अगर सरणी को टिग टेम्पलेट में मैन्युअल रूप से बनाया गया है (यानी एक निश्चित आकार और पहले से ज्ञात तत्वों के साथ)। एक सरणी का उपयोग करके आप ऐसा कैसे करेंगे जैसे कि इसकी अज्ञात लंबाई और सामग्री हो? उदाहरण के लिए इसे किसी अन्य नियंत्रक द्वारा वापस किया जा सकता है। – JeanValjean

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

  • कोई संबंधित समस्या नहीं^_^