2015-05-04 6 views
6

JsHelper के रूप में सरल ajax प्रपत्र तो क्या मैं कर रहा हूँ ajax
CakePHP 3.0


का उपयोग कर मैं सिर्फ दो इनपुट क्षेत्रों के डेटाबेस में मेरी प्रपत्र डेटा को बचाने के लिए है CakePHP 3.0 में नहीं रहा।
मेरी फ़ाइलें हैं:


  1. add.ctp
  2. js.js
  3. EmployeesController.php


add.ctp

 

    $this->Form->create('Employees'); 
     $this->Form->input('name', array('id'=>'name')); 
     $this->Form->input('age', array('id'=>'age')); 
     $this->Form->button('Add Info', array(
       'type'=>'button', 
       'onclick'=>'infoAdd();' 
     )); 
    $this->Form->end(); 

js.js

 

    function infoAdd() { 
     var name=$("#name").val(); 
     var age=$("#age").val(); 
     $.get('/employees/info?name='+name+"&age="+age, function(d) { 
      alert(d); 
     }); 
    } 

EmployeesController.php

class EmployeesController extends AppController { 
    public $components=array('RequestHandler'); 
    public function add() { 
     $emp=$this->Employees->newEntity(); 
     if($this->request->is('ajax')) { 
      $this->autoRender=false; 
      $this->request->data['name']=$this->request->query['name']; 
      $this->request->data['age']=$this->request->query['age']; 
      $emp=$this->Employees->patchEntity($emp,$this->request->data); 
      if($result=$this->Employees->save($emp)) { 
       echo "Success: data saved"; 
       //echo $result->id; 
      } 
      else { 
       echo "Error: some error"; 
       //print_r($emp); 
      } 
     } 
    } 
} 


नोट: अपने मॉडल केवल दोनों क्षेत्रों के लिए not empty नियम है

जो कुछ मैं कर रहा हूं वह ठीक काम कर रहा है लेकिन मुझे नहीं लगता कि मैं इसे सही तरीके से कर रहा हूं या जैसा होना चाहिए।
कृपया मेरी मदद करें जो मुझे याद आ रही है और मुझे क्या करने की आवश्यकता नहीं है। , इसलिए autoRender की जरूरत नहीं है ( http://book.cakephp.org/3.0/en/views/json-and-xml-views.html)

public function add() { 

    $data = []; 

    $emp=$this->Employees->newEntity(); 
    if($this->request->is('ajax')) { 
     $this->request->data['name']=$this->request->query['name']; 
     $this->request->data['age']=$this->request->query['age']; 
     $emp=$this->Employees->patchEntity($emp,$this->request->data); 
     if($result=$this->Employees->save($emp)) { 
      $data['response'] = "Success: data saved"; 
      //echo $result->id; 
     } 
     else { 
      $data['response'] = "Error: some error"; 
      //print_r($emp); 
     } 
    } 

    $this->set(compact('data')); 
    $this->set('_serialize', 'data'); 
} 

serialize समारोह केक है कि यह समारोह की उम्मीद कर एक दृश्य के लिए नहीं कर रहा है बताता है:

उत्तर

6

दूर autoRender लाइन ले लो और क्रमानुसार डेटा आप वापस आ करना चाहते हैं।

+0

यदि मेरे पास तालिका में 13 फ़ील्ड हैं तो क्या होगा? मुझे 13 पंक्तियों को यह लिखना चाहिए-> अनुरोध-> डेटा ['name'] = $ this-> अनुरोध-> क्वेरी ['name']; $ यह-> अनुरोध-> डेटा ['आयु'] = $ यह-> अनुरोध-> क्वेरी ['आयु']; ................... ?? क्या उनका शॉर्टकट है? – distromob