Combiner Angularjs et CodeIgniter
Je suis en train de travailler sur un site existant écrit en CodeIgniter et nous sommes à la recherche à l'aide d'AngularJS pour certaines pages qui nécessitent beaucoup de frontend fonctionnalité, mais nous ne voulons pas remplacer tous les tous les CodeIgniter vues (à la fois (encore)).
Si je clique sur un lien qui est contrôlée par angulaire du routeur et il est géré par javascript mais lien suivant pourrait être "normal" de la demande qui devrait géré par le framework CodeIgniter.
Est-il une manière élégante de combiner ces deux méthodes? Je n'ai pas vraiment l'esprit de l'extra côté client, les frais généraux, car le site n'est pas en cours d'exécution dans la production de encore.
source d'informationauteur Han Dijk | 2013-02-04
Vous devez vous connecter pour publier un commentaire.
Il semble que vous êtes à la recherche d'progressivement moins utiliser CodeIgniter (CI) et de l'acheminement de votre angulaire de l'application augmente. Ce n'est pas difficile, mais nécessite beaucoup de détails. Quelle méthode de travail dépend de votre projet de la structure. Note: j'ai supprimé index.php à partir du Code de l'Allumeur Url, de sorte que les chemins d'accès ci-dessous peuvent être différentes de celles par défaut.
1) CodeIgniter installé dans la racine
Si CI est installé à la racine de votre serveur, vous pouvez créer un dossier dans CI (par exemple, j'ai un "ng" dossier). Votre projet va ressembler:
lieu d'un .fichier htaccess dans
/ng
avec les éléments suivants:Cela permet les fichiers dans
/ng
d'être directement accessible, plutôt que d'envoyer les demandes de retour par le biais de CI de routage du système. Par exemple, vous pouvez charger directement à maintenant:example.com/ng/partials/angular-view.html
La page web principale seront créés par CodeIgniter, mais il peut désormais inclure Angulaire actifs, tels que des vues partielles, etc. Finalement, vous pouvez remplacer la plupart de ce que CodeIgniter est par un juste retour d'une simple page, et ayant Angulaire de la charge partielle des vues à partir de
/ng
comme c'est conçu pour.Cette méthode est sympa parce que CodeIgniter pouvez contrôler si cette première page est chargée (via un code d'authentification de l'utilisateur dans votre CI, le contrôleur). Si l'utilisateur n'est pas connecté, ils sont redirigés et de ne jamais voir l'angle d'application.
2) CodeIgniter dans le Répertoire
Si CI est installé dans un répertoire, comme
example.com/myapp/(code igniter)
vous suffit de créer un répertoire à côté d'elle,example.com/myappNg/
Maintenant dans votre Angulaire de l'application, vous pouvez demander des ressources à partir de CI en faisant des chemins relatifs à la racine du domaine, plutôt que par rapport à l'angle d'application. Par exemple, dans Angulaire, vous ne pourrez plus demander une vue partielle de l'angle du dossier
partials/angular-view.html
plutôt que vous aurez envie de demander des points de vue à partir de CI/myapp/someResource
. Remarque le premier/
. "someResource" peut renvoyer un document html, ou JSON ou de ce que vous faites avec le Code de l'Allumeur en premier lieu.Finalement, vous pouvez remplacer le nombre de chemins qui référence
/myapp/
. Une fois que vous n'utilisez plus de CI pour quoi que ce soit, vous pouvez simplement placer votre Angulaire index.html dans/myapp/
et il va continuer à référencer vos chemins d'accès à/myappNg/
.TL;DR Rendre votre Angulaire application entièrement disponible et dissocier de CodeIgniter. Passer progressivement vers l'utilisation Angulaire des vues partielles et d'autres JSON sources au lieu de le relier à CodeIgniter pages. Éventuellement remplacer votre CodeIgniter point de terminaison avec un fichier HTML qui amorce Angulaire.
Votre meilleur pari est de garder votre backend code distinct de l'angle de code
et l'utilisation de la codeInginter code de l'API de l'
/Codeigniter Code
/Angulaire Code
Parce que CodeIgniter est livré avec sa part de la fonction de sécurité ce doit être votre meilleur pari
Je n'ai jamais utilisé Angulaire néanmoins cela peut aider.
Ne ce JavaScript faire une requête Ajax à l'un de vos CI contrôleurs? Si donc, CI a désormais la
is_ajax_request()
méthode, qui permet de vérifier si une demande (POST ou GET) est à venir via ajax. Vous pouvez procéder différemment en fonction de la demande en provenance de l'Ajax vs une requête normale.Guide de l'utilisateur (bas de la page): http://ellislab.com/codeigniter/user-guide/libraries/input.html
Espère que cela aide!
J'ai hérité d'un IC app et je suis en utilisant Angulaire avec CI principalement pour l'acheminement des demandes. Dans mon cas, je ne suis pas Angulaire à l'aide de modèles, donc j'utilise un ' vide, mais avec un espace de paramètres pour le modèle de l'option dans mon $routeProvider config. Cela me permet de faire habituelles CI requêtes ajax sans trop de changement à l'original du code côté serveur.
J'ai ramassé un IC site à partir d'un autre programmeur qui je travaille qui est en congé pour quelques mois. Notre site est en construction pour la plupart avec beaucoup de anguleuses, de par la nature de son objet. Notre solution a été un peu différent.
Tout ce qui diffère de la norme CI-cadre est un couple de dossiers:
js\angular\controllers
etjs\angular\modules
dans CI du dossier de l'application, pour contenir la totalité de l'angle de modèle et le contrôleur de fichiers. Puis de charger le angulaires docs dans le dossier application base.De plus de la réponse donnée par Aaron Martin, on peut aussi l'utiliser comme un approche client - serveur.
Permet de dire que nous faisons les 2 dossiers dans la racine de notre projet :
Client
Serveur
Client dossier contiendra tout le code d'AngularJS et côté client bibliothèques, y compris la Charmille et Npm bibliothèques.
Le routage du côté client sera également géré par AngularJS routeur.
Il y aura des usines ou des services qui agissent en tant que fournisseurs pour angularjs sur le côté client.
Ces fichier contient le code de demande l'envoi et la réception de la réponse du serveur.
Serveur Dossier auront le code de Laravel ou CodeIgniter ou Tout autre framework PHP.
Vous permettra de créer toutes les Api de la demande et de développer les fonctionnalités en conséquence.
D'où le PHP section (Serveur de Répertoire) à l'ensemble sera de stocker tous les Fichiers multimédias et les Fichiers de Base de données. En outre, il devra aussi tout les liens pour les flux RSS et ainsi de suite.
Le Client doit recevoir toutes les réponse en JSON ou XML format lorsqu'il demande sur n'importe quel API sur son serveur..
Ce qui selon moi est un des plus beaux pratique pour le développement de Webapps.