2016-04-01 11 views
0

Post Ich habe ein Formular in meiner Anwendung. Wo ich wenige Felder habe. Ich habe eine Drittpartei API, die die Daten in Datenbank einfügt. Mit dieser API muss ich die Formulardaten einfügen. Wenn der Benutzer auf die Schaltfläche Speichern klickt, sollte er eine API aufrufen, um die Daten zu speichern.Müssen Formulardaten auf API von Drittanbietern in CakePHP

Kann mir jemand helfen. wie man das in cakephp erreicht.

Ich würde schätzen, schnelle Antwort

Antwort

0
  1. Zuerst in Ihrer View-Datei erstellen Form wie add.ctp
  2. eine Funktion in Ihrem Controller erstellen wie
 

    function add(){ 
     if(!empty($this->data)){ 
    // Here you perform your API data save 
    } 
    } 

0

Die Frage ist: Möchten Sie die eingegebenen Daten bearbeiten, nachdem sie im Formular eingereicht wurden?

Fall Nr:

Ändern Sie die Aktion des Formulars an die externe API und lassen Sie die API die Anforderung behandeln.

// add.ctp 
<?php 
echo $this->Form->create("MyModel", [ 
    "type" => "POST", 
    "url" => "link://to.external.api/" 
]); 
echo $this->Form->input(); // all fields 
echo $this->Form->end("Submit"); 
?> 

Fall ja:

// add.ctp (Just the regular form) 
<?php 
echo $this->Form->create("MyModel"); 
echo $this->Form->input(); // all fields 
echo $this->Form->end("Submit"); 
?> 

Und dann tun, was Sie mit den Daten in Ihrem Controller oder Modell wollen und dann cURL verwenden, um die Daten an die externe API zu schreiben:

PostsController.php 

<?php 
public function Add(){ 
    // Manipulate the form data here before saving it (for example, has a password): 
    $this->request->data["MyModel"]["password"] = sha1($this->request->data["MyModel"]["password"]); 

    // And do a cURL request to post the data to the external API 
    $ch = curl_init("link://to.external.api/"); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($this->request->data["MyModel"])); 

    $response = curl_exec($ch); 
    curl_close($ch); 

    // You can do something with the response of the API here 
    debug($response); 
} 
?> 
+0

Ich möchte die REST-API als separate Datenquelle verwenden. Wie wir eine Datenquelle in der Datenbank.php für mysql erstellen. Ähnlich muss ich Datenquelle für REST API erstellen. Gibt es einen Weg dies zu tun? Jede Beispielimplementierung für diese Art von Dingen: http://book.cakephp.org/2.0/en/models/datasources.html –

+0

Sie können, aber Sie müssen Ihre eigenen 'save()' und 'finden() 'Methoden. Passt das Beispiel hinter Ihrem Link nicht zu Ihren Bedürfnissen? – Koen

Verwandte Themen