php AngularjsとCodeIgniterの組み合わせ




javascript (4)

私はCodeIgniterで書かれた既存のサイトに取り組んでおり、多くのフロントエンド機能を必要とするいくつかのページではAngularJSを使用していますが、すべてのCodeIgniterビューを(一度に(まだ))置き換えたくありません。

だから私は角度のルータによって制御されているリンクをクリックし、それはjavascriptによって処理されますが、次のリンクはCodeIgniterフレームワークによって処理されるべき "通常の"要求である可能性があります。

これら2つの方法を組み合わせるエレガントな方法はありますか? サイトがまだ本番環境で稼働していないため、私はクライアント側のオーバーヘッドを気にしません。

https://code.i-harness.com


Aaron Martinが与えた答えに加えて、これをクライアント - サーバーアプローチとして使用することもできます。

プロジェクトのルートに2つのフォルダを作成するとします。

  1. クライアント

  2. サーバ

Clientフォルダには、AngularJSのすべてのコードとBowerライブラリとNpmライブラリを含むクライアントサイドライブラリが含まれます。 クライアント側のルーティングは、AngularJSルータによっても処理されます。

クライアント側でangularjsのプロバイダとして機能する工場やサービスがあります。 これらのファイルには、要求を送信し、サーバー側から応答を受け取るコードが含まれます。

サーバーフォルダには、LaravelまたはCodeIgniterのコードやその他のPHPフレームワークがあります。 要求のすべてのAPIを作成し、それに応じて機能を開発します。 したがって、PHPセクション(サーバーディレクトリ)全体で、すべてのメディアファイルとデータベースファイルが格納されます。 さらに、RSSフィードなどの受信リンクもあります。

クライアントは、サーバ上の任意のAPIを要求するときに、JSONまたはXML形式ですべての応答を受け取るだけです。

これは私によると、Webappsを開発するための最も優れたプラクティスの1つです。


Angularを使ったことは一度もありませんが、これは役に立ちます。

だから私は角度のルータによって制御されているリンクをクリックし、それはjavascriptで処理されます

このJavaScriptはCIのコントローラの1つにAjaxリクエストを行いますか? もしそうなら、CIにはis_ajax_request()メソッドがあり、リクエスト(POSTまたはGET)がajax経由で来ているかどうかを確認することができます。 Ajaxからのリクエストと通常のリクエストから、別の方法で処理を進めることができます。

ユーザーガイド( ページの一番下 ): http://ellislab.com/codeigniter/user-guide/libraries/input.html : http://ellislab.com/codeigniter/user-guide/libraries/input.html

それが役に立てば幸い!


私はCIアプリケーションを継承し、主にルーティング要求にCIを使用してAngularを使用しています。 私の場合、Angularテンプレートは使用していないので、空のテンプレートを$ routeProvider configのテンプレートオプションに使用します。 これにより、オリジナルのサーバー側コードをあまり変更することなく、通常のCI ajaxリクエストを行うことができます。

angular.module('my_app', []).
  config(['$routeProvider', function($routeProvider) {
  $routeProvider.
   when('/', { template: " ", controller: my_routes.mainpage}). 
   when('/design/:designId/:action', {template: " ", controller: my_routes.show_design}).
   when('/vote_design/:designId', {template: " ", controller: my_routes.vote_design}).
   otherwise({redirectTo: '/'});
}]);

私はそれを使って作業する別のプログラマーから数ヶ月間休暇中のCIサイトを手に入れました。 私たちのサイトは、その目的の性質上、大部分が角張っています。 私たちのソリューションは少し異なりました。

すべての角度モデルとコントローラファイルを保持するには、CIのアプリケーションフォルダのjs\angular\controllersjs\angular\modules 2つのフォルダが標準のCIフレームワークと異なります。 その後、角度のドキュメントをアプリケーションのベースフォルダにロードします。





angularjs