मैं फू नियंत्रक में एक कार्य विधि है जो मानकों की आवश्यकता है:ZF2: प्लगइन को आगे बढ़ाने के लिए पैरामीटर कैसे पास करें, जिसे मैं उस विधि में प्राप्त कर सकता हूं जिसे मैं उन्हें अग्रेषित करता हूं?
public function fooAction($one, $two) {
$a = one;
$b = $two;
}
और मैं कुछ बू नियंत्रक के अन्य विधि से उस विधि को अग्रेषित करने के लिए की जरूरत है। और उन पैरामीटर में से एक संदर्भ पैरामीटर द्वारा होना चाहिए।
$result = $this->forward()->dispatch('Boo\Controller\Boo', array('action' => 'boo'));
कोई किसी भी अतिरिक्त पैरामीटर: केवल उदाहरण the manual है कि यह है। लेकिन वे लिखते हैं:
$ पैरामीटर जो के साथ इस विशेष अनुरोध के प्रयोजनों के लिए एक RouteMatch वस्तु को देखने के लिए मानकों का एक वैकल्पिक सरणी है।
तो, मैं करने की कोशिश की:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'one' => &$one,
'two' => $two,
));
लेकिन यह काम नहीं करता।
क्या नियंत्रक को आगे बढ़ाने के लिए अतिरिक्त पैरामीटर पास करने का कोई तरीका है?
युपीडी:
ये भी काम नहीं करते:
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'params' => array(
'one' => &$one,
'two' => $two,
)));
$result = $this->forward()->dispatch('Boo\Controller\Boo', array(
'action' => 'boo',
'options' => array(
'one' => &$one,
'two' => $two,
)));
युपीडी 2:
मैं अभी भी (के साथ पैरामीटर पास करने के कार्यक्षमता मैं चाहता हूँ नहीं मिल सकता है forward
प्लगइन) लेकिन मुझे अन्य समाधान मिल गए। forward
प्लगइन कॉल करने से पहले मैं Request
वस्तु को चर सेट और forward
के बाद मैं अपने बू \ नियंत्रक \ BooController की मेरी बू कार्रवाई में Request
से उन्हें प्राप्त:
// in Foo::fooAction
$this->getRequest()->one = &$one;
$this->getRequest()->two = $two;
$result = $this->forward()->dispatch('Boo\Controller\Boo', array('action' => 'boo'));
// in Boo::booAction
$a = $this->getRequest()->one;
$b = $this->getRequest()->two;
बेवकूफ समाधान है, यह अजाक्स अनुरोधों के साथ काम नहीं करेगा। अभी भी दिलचस्पी है कि आगे प्लगइन के साथ पैरामीटर कैसे पास करें। या मई बूओएक्शन में उन्हें कैसे प्राप्त करें। क्योंकि में कोई भी चीज़ नहीं है, यदि मैं उन्हें forward
से पास करता हूं।
युपीडी 3 और अंतिम:
मैं अंत में, जहां वे मानकों मैं forward
प्लगइन के साथ पारित छिपाने के लिए तय कर लिया है पाया। उन्होंने उन्हें RouteMatch
ऑब्जेक्ट में रखा।
- यह अनुमान लगाने के लिए प्रयास करें कि हमने आपके पैराम्स को छुपाया है ... ओह हाँ, वे RouteMatch
में हैं, निश्चित रूप से वे वहां हैं, क्या आपको और नहीं लगता है?
और मैन्युअल के forward
प्लगइन अनुभाग में कोई भी जानकारी नहीं!
पैरामीटर प्राप्त करने के लिए, मैं में यह करने के लिए है मेरी BooController::booAction
:
$param = $this->getEvent()->getRouteMatch()->getParam('nameOfParam');
'बूओ' एक वैध नियंत्रक-उपनाम है? जैसा कि दस्तावेज 'बू' द्वारा इंगित किया गया है या तो पूरी तरह से योग्य क्लासनाम (उदाहरण के लिए 'मॉड्यूलर \ कंट्रोलर \ बू कंट्रोलर') होना चाहिए या यह इस कॉन्फ़िगरर के लिए उपनाम होना चाहिए जिसे आप अपनी कॉन्फ़िगरेशन – Sam
के अंदर परिभाषित करते हैं हां, यह पूरी तरह से योग्य क्लासनाम है , यह मेरे पास 'बू \ नियंत्रक \ बू' है। मैंने इसे कम करने के लिए इस सवाल में लिखा था। अस्पष्टता से बचने के लिए अभी बदलें। – Green
यह अभी भी केवल एक उपनाम है। यह मानना सुरक्षित है कि आपने 'बू \ नियंत्रक \ बूओ' => 'बू \ नियंत्रक \ बू नियंत्रक' से एक invokables उपनाम सेट अप किया है? इसके अलावा आपका पहला दृष्टिकोण सही है। यदि पैरा मौजूद हैं तो आप कैसे परीक्षण करते हैं? क्या वे मार्ग-विन्यास में भी परिभाषित हैं? Tihs ब्लॉगपोस्ट उस कार्यक्षमता का उपयोग करता है जिसे आप बहुत खोज रहे हैं: http://www.michaelgallego.fr/blog/2012/10/06/how-to-replace-the-action-helper-in-zf-2-and बनाओ-महान widgetized-सामग्री / – Sam