2016-09-12 4 views
1

J'ai un problème avec mettre kohana restfull api. Il semblerait que mon $ post ne fonctionne pas, car après avoir utilisé cette fonction, je ne peux voir que 'Data not found!'. Une idée? Merci pour l'aide. Voici mon code.Kohana Restful Put

$trg_id = $this->request->param('id'); 
     if ($trg_id) { 
      $post = $this->request->post(); 
      if ($post) { 
       $objTrackingGroup = ORM::factory('Orm_trackingGroup', $trg_id); 
       if ($objTrackingGroup->loaded()) { 
        $objTrackingGroup->values($post) 
             ->save(); 
        $this->rest_output($data, 200); 
         } else { 
          $data = array(
           'code' => 500, 
           'error' => 'Unknown error' 
          ); 
          $this->rest_output($data, 500); 
         } 

       } else { 
        $data = array(
         'code' => 404, 
         'error' => 'Data not found!' 
        ); 
        $this->rest_output($data, 404); 
       } 

     }else { 
      $data = array(
       'code' => 404, 
       'error' => 'Data not found' 
      ); 
      $this->rest_output($data, 404); 
     } 
+0

Il est semble que la fonction de mise à jour ne peut pas voir après. – R0ck99

+0

Soumettez-vous des données en utilisant la méthode PUT ou POST? parce que $ this-> request-> post(); ne fonctionnera qu'avec POST. – Faraz

Répondre

0

Vous pouvez utiliser ce module Kohana pour travailler avec l'API Restfull. il a des méthodes pour traiter les PUT, les méthodes UPDATE https://github.com/SupersonicAds/kohana-restful-api

Vous pouvez utiliser

$this->request->query(); 
$this->request->body(); 

Si vous recevez vos paramètres dans la requête() puis son un tableau, vous pouvez l'utiliser, ou si vous demandez est RAW request dans body() que vous pouvez utiliser la fonction parse_str pour le convertir en tableau.

Voici mon exemple

class Controller_RestTest extends Controller_REST { 
    public function action_index() { 
    } 
    public function action_update() { 
     echo Debug::vars ($this->request->query()); 
     echo Debug::vars ($this->request->body()); 
    } 
} 

et pour cette demande PUT je reçois cette réponse

PUT http://localhost/RestTest?a=1234&b=4567 
Content-Type: application/x-www-form-urlencoded 
?body-contents=this is boy contents 
-- response -- 
200 OK 
Server: nginx 
Date: Tue, 11 Oct 2016 11:43:44 GMT 
Content-Type: text/html; charset=utf-8 
Content-Length: 158 
Connection: keep-alive 
Cache-Control: no-cache, no-store, max-age=0, must-revalidate 
Vary: Accept-Encoding 
Content-Encoding: gzip 
X-Powered-By: PHP/5.6.26 




array(2) (
    "a" => string(4) "1234" 
    "b" => string(4) "4567" 
) 

string(35) "?body-contents=this is boy contents" 
+0

Je sais déjà à ce sujet, mais je ne sais toujours pas comment créer un exemple. – R0ck99

+0

vérifier la réponse mise à jour – Faraz

+0

Merci beaucoup. Je cherchais ça. :) – R0ck99