2017-09-16 50 views
12

द्वारा अपडेट किया जाता है मेरे पास दो मॉडल Group_ones और Group_twos हैं। मैं इस मान को ac_config.ctp फ़ाइल में दिखाता हूं।दृश्यमान दो मॉडलों को एक दृश्य में कैसे महत्व दिया जाता है और दो मॉडलों को एक नियंत्रक

मेरे नियंत्रक कोड के नीचे

public function ac_config($id = null) 
    { 
     if (!$id) { 
      $this->Session->setFlash('Please provide a Site id'); 
      $this->redirect(array('action'=>'dashboard')); 
     } 

     $site_id_1   = $this->GroupOne->findById($id); 
     $site_name   = $site_id_1['GroupOne']['site_name']; 
     $ac_one_time  = $site_id_1['GroupOne']['ac_on_time_one']; 
     $group_one_active = $site_id_1['GroupOne']['active']; 

     $site_id_2   = $this->GroupTwo->findById($id); 
     $ac_two_time  = $site_id_2['GroupTwo']['ac_on_time_two']; 
     $group_two_active = $site_id_2['GroupTwo']['active']; 


     if (!$site_id_1) { 
      $this->Session->setFlash('Invalid Site ID Provided'); 
      $this->redirect(array('action'=>'dashboard')); 
     } 

     if (!$site_id_2) { 
      $this->Session->setFlash('Invalid Site ID Provided'); 
      $this->redirect(array('action'=>'dashboard')); 
     } 

     if ($this->request->is('post') || $this->request->is('put')) { 
      $this->GroupOne->id = $id; 
      $this->GroupTwo->id = $id; 

      if (($this->GroupTwo->save($this->request->data)) || ($this->GroupOne->save($this->request->data))) { 
       $this->Session->setFlash(__('AC Configuration has been update')); 
       $this->redirect(array('action' => 'ac_config', $id)); 
      } 
      else 
      { 
       $this->Session->setFlash(__('Unable to AC Configuration has been update.')); 
      } 
     } 

     $this->set(compact('site_name','ac_one_time','group_one_active')); 
     $this->set(compact('ac_two_time','group_two_active')); 

     $this->set('group_one', $site_id_1); 
     $this->set('group_two', $site_id_2); 

     if (!$this->request->data) { 
      $this->request->data = $site_id_1; 
      $this->request->data = $site_id_2; 
     } 
    } 

मेरा विचार सामग्री नीचे Image_one

समस्या है तब होता है जब मैं save बटन है। यह केवल डेटाबेस में समूह -2 फॉर्म मानों को बचाता है। जब AC Run Time और AC Rest Time दिखाने Group-2 तो प्रपत्र मूल्यों Model Group_twos और AC Run Time और AC Rest Time के डेटाबेस में बचाने दिखाने Group-1 तो फार्म मूल्यों Model Group_ones के डेटाबेस में सहेजें।

एक अन्य समस्या नीचे

if (!$this->request->data) { 
    $this->request->data = $site_id_1; 
    $this->request->data = $site_id_2; // this show rest time, run time 
} 

यदि मैं यह ऊपर कोड तो लिखना मैं फिर

Image_two

if (!$this->request->data) { 
    $this->request->data = $site_id_2; 
    $this->request->data = $site_id_1; //this show rest time, run time. 
} 

मिल अगर मैं इस उपरोक्त कोड तो लिख रहा

मिलता है Image_three

लेकिन मुझे AC Run Time and AC Rest Time दोनों समूह एक ही समय की आवश्यकता है और जब मैं मॉडल में समूह मूल्य सहेजने वाले किसी भी दो समूह को सहेजें बटन पर क्लिक करता हूं। क्या मेरा गलत मेरा तर्क है।

आपकी मदद धन्यवाद।

+0

बारी '$ this-> अनुरोध> एक में डेटा' सरणी, जो दोनों को पकड़ सकता है, वर्तमान में यह सिर्फ इसे ओवरराइट कर रहा है। –

+0

मैं आपकी टिप्पणी साफ़ नहीं कर रहा हूं। कृपया अधिक जानकारी दें –

+0

अपने कोड में आप '$ यह-> अनुरोध-> डेटा = $ site_id_1 कर रहे हैं; $ this-> अनुरोध-> डेटा = $ site_id_2; 'जो दूसरे के साथ पहले ओवरराइट करेगा। अगर यह '$-- अनुरोध-> डेटा ['site_1'] = $ site_id_1 था; $ यह-> अनुरोध-> डेटा ['साइट_2'] = $ site_id_2; 'फिर आप इसे सही मॉडल में लूप कर सकते हैं। –

उत्तर

8

सीधे शब्दों में अनुरोध डेटा सेट करने से पहले दो सरणियों विलय:

if (!$this->request->data) { $this->request->data = array_merge($site_id_1, $site_id_2); }

यदि इससे सहायता नहीं करता है, यह रूप में अच्छी तरह से अपने को देखने के कोड को देखने के लिए उपयोगी होगा।

+0

बताएं आपका समाधान मेरी समस्या के लिए आंशिक रूप से सही है। बहुत बहुत धन्यवाद –

6

आपके कोड के अनुसार, आप अनुरोध डेटा सरणी को ओवरराइट कर रहे हैं। आपको क्या करने की ज़रूरत है कि आपको दोनों सरणी अलग से सेट करें या एकल सरणी में विलय करके।

अपने वर्तमान कोड $site_id_1 अधिलेखन नीचे $site_id_2 द्वारा:

$this->request->data = $site_id_1; 
$this->request->data = $site_id_2; 

अब आप तरीके से नीचे डेटा पास कर सकते हैं:

$this->request->data['site_id_1'] = $site_id_1; 
$this->request->data['site_id_2'] = $site_id_2; 

या

$this->request->data = array_merge($site_id_1, $site_id_2); 

आपको बस उन दो पंक्तियों को बदलना होगा।

इसके अलावा, मैं नहीं जानता कि कैसे आप दोनों मॉडलों के लिए ध्यान में रखते हुए परिणाम प्राप्त करने में कठिनाई है, लेकिन आप अलग से नीचे की तरह कुछ डेटा लाने कर सकते हैं:

$site_id_1 = $this->request->getData('site_id_1'); 
$site_id_2 = $this->request->getData('site_id_2'); 
संबंधित मुद्दे