2016-07-29 3 views
2

私はPHPとKohanaの非常に新しいです。すでにWAMPサーバーで正常に動作しているサンプル/デモ "hello World" PHP Kohanaアプリケーションを作成しました。安心なwebservicesを使用してPHP Kohanaアプリケーションを作成するにはどうすればよいですか?

アプリケーションを完全なサーバー側コンポーネントとして使用したいと考えています。

私はこのアプリケーションにサーバー側のロジックしか持たないので、ORMを使用してMySQLデータベースと通信する必要があります。

私はUI部分を持つ別のクライアント側アプリケーションを用意します。

PHP-KohanaがクライアントからのRestFul Webservices呼び出しを認識し、それに応じてJSON応答を与える必要があります。

RestFul WebservicesをサポートするKohanaアプリケーションを作成することはできますか?

はいの場合は、KohanaアプリケーションでWebサービスを作成するためのガイダンスを提供してください。

デモ用のサンプルコードはありますか?

答えて

1

それは、AJAX要求を受け入れ、生産するために、比較的容易に可能であり、そこ私の知っている具体的なデモやサンプルコードがありませんので、うまくいけば、これらのヒントは、あなたがそれを始めるのに役立ちます...

KohanaのJSON応答

if ($this->request->is_ajax()) { 
    // Disable any rendering of the template so it just returns json. 
    $this->auto_render = FALSE; 
} 

あなたはおそらくしたいと思う:注意すべき最初の事は最初にそう最初の事そう言われない限り、Kohanaのは常にビューを生成しようとすると、これはJSONレスポンスとして失敗するということですおそらく親Controllerのbefore()メソッドに入れて、DBからデータを取得する前に必ず実行してください。

私の個人的な好みは、データが常に比較的標準的な形式で返されるように標準のAJAX応答配列を設定することです。例:

// Standard ajax response array. 
$this->ajax_response = array(
    'success' => FALSE, 
    'error' => NULL, 
    'raw_data' => NULL, 
    'generated' => '' 
); 

必要に応じて上記をカスタマイズしてください。 before()メソッドでこれも必要になるでしょう。

アクションメソッドでは、DBからデータを取得し、配列に追加します。あなたはその後、現時点ではKohanaのが原因で何も出力しませんよう、パズルの最後のピースは、実際に、このデータを返すようにhttp://www.website.com/controller/foobar/42

としてURLを呼び出すことによって、このデータを要求することができるはず

public function action_foobar() { 
    // Get the primary key ID from the URL. 
    $var1 = $this->request->param('var1'); 

    $data = ORM::factory('Model', $var1); 
    if ($data->loaded()) { 
     $this->ajax_response['success'] = TRUE; 
     $this->ajax_response['raw_data'] = $data; 
    } else { 
     $this->ajax_response['error'] = 'Data could not be found.'; 
    } 
} 

私たちはそうしないように言いました。あなたの後の()メソッドでは、次の操作を行います。そして、あなたはその応答を解釈するのは自由ですが、あなたのクライアント側のアプリケーションではjQueryに合う

if ($this->request->is_ajax()) { 
    $this->request->headers('Content-Type', 'application/json'); 
    $this->response->body(json_encode($this->ajax_response)); 
} 

を:

$.ajax({ 
    type: "POST", 
    url: "http://www.website.com/controller/foobar/" + foobarId, 
    dataType: 'json', 
    success: function (data) { 
     if (!data.success) { 
      alert(data.error); 
     } else { 
      // Handle the returned data. 
     } 
    }, 
    error: function (xhr, status, errorThrown) { 
     // Something went very wrong (response failed completely). 
     alert(errorThrown); 
    } 
}); 

幸運あなたのアプリケーションを構築すると!私はこれが少なくともあなたを始めさせるのに役立つことを願っています。

関連する問題