2011-03-08 9 views
9

के साथ एक कस्टम JSON प्रतिक्रिया ऑब्जेक्ट बनाना मैं सामान्य रूप से प्रतिक्रिया शरीर पर एक एन्कोडेड जेसन ऑब्जेक्ट जोड़ता हूं, हालांकि अब मेरे पास एक ऐसी स्थिति है जो ContextSwitch एक्शन हेल्पर का उपयोग कर वारंट करती है। - एक लेआउट के भीतर सामान्य html के रूप में प्रपत्र प्रस्तुतज़ेंड एक्शन हेल्पर कॉन्टेक्स्टस्विच

  1. एचटीएमएल:

    मैं एक Zend_Form कि तीन अलग-अलग प्रतिक्रिया संदर्भों की आवश्यकता है।

  2. एचटीएमएल-आंशिक - एक AJAX "प्राप्त करें" अनुरोध जो को केवल HTML के रूप में प्रस्तुत करता है।
  3. जेसन - एक AJAX "पोस्ट" अनुरोध जो किसी भी फॉर्म वैल्यूएशन त्रुटि संदेश देता है।

प्रत्येक संदर्भ के लिए मेरे पास 3 दृश्य स्क्रिप्ट हैं। हालांकि दो एचटीएमएल संदर्भ एक ही दृश्य स्क्रिप्ट का उपयोग कर सकते थे, लेकिन मुझे यह पता नहीं चला है कि यह संभव है या नहीं।

  • form.phtml
  • form.html.phtml

एचटीएमएल संदर्भ विचारों ठीक काम करते हैं, लेकिन json दृश्य चुना है नहीं किया जा रहा है form.json.phtml अप। डिफ़ॉल्ट जेसन पोस्ट कॉलबैक व्यवहार को ओवरराइड करने या प्रतिक्रिया निकाय को कस्टम एन्कोडेड ऑब्जेक्ट पास करने का सबसे अच्छा तरीका क्या है?

+0

मैं ने पाया है कि contextSwitch पर setAutoJsonSerialization (गलत) की स्थापना की अनुमति देता है के लिए एक दृश्य स्क्रिप्ट प्रदान करने की, जबकि अभी भी संदर्भ सामग्री प्रकार रखते हुए हैडर। – gawpertron

उत्तर

6

व्यक्तिगत रूप से, मैं JSON सामग्री जेनरेट करने के लिए "व्यू" का उपयोग नहीं करता हूं।

$ajaxContext = $this->_helper->getHelper('AjaxContext'); 
$ajaxContext->setAutoJsonSerialization(false) 
    ->addActionContext('index', array('html', 'json')) 
    ->initContext(); 

और मेरे indexAction() में:

if (true === $this->isAjaxJson()) { 
    $this->_helper->json(
     array(
      'response' => $myResponse, 
      'message' => $myMesage 
     ) 
    ); 
    return; 
} 

आशा इस मदद मेरी init() में, मैं कुछ इस तरह की है।

+0

हां यह है कि मैंने इसे कम या कम कैसे किया। हालांकि मैं प्रतिक्रिया को संभालने के लिए एक अलग दृश्य स्क्रिप्ट का उपयोग करता हूं। – gawpertron

0

इस मदद मिल सकती है: $this->_helper->json->sendJson($data); जबकि,

$data=array('data1'=>'val1','data2'=>'val2');

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