73 votes

Angularjs sur une application symfony2

Je suis en train de travailler sur un SF2 application qui utilise beaucoup de javascript sur la face avant.

SF2 me donne une bonne manière de construire un agréable REPOS application, de gérer ma base de données avec doctrine, utiliser twig dans les templates et ainsi de suite, mais je voudrais utiliser Angularjs.

Je sais que angularjs un SF2 sont 2 cadre de référence différent avec une approche différente, mais je me demandais quelle est la meilleure façon de faire ce travail.

Est-il encore la peine?

Si oui, que pensez-vous est la plus propre et la plus efficace solution?

Peut-être utiliser php plutôt que twig dans les templates à utiliser angularjs accolades ?

64voto

Halim Qarroum Points 5758

Je pense que Symfony2 peut parfaitement fonctionner avec AngularJS . La preuve, c’est que je crée une API d’un côté avec Symfony et une application Web de l’autre avec AnglularJS.

De plus, pour certaines raisons, je génère mes vues dans mon application Web avec Twig . J'intègre simplement les accolades d'angular dans une déclaration {% verbatim %} {% endverbatim %} brindille chaque fois que je dois utiliser Angular dans mes vues.

26voto

acme Points 5109

À partir de Twig 1.12, la balise brute a été renommée textuellement :

 {% verbatim %}
    <ul>
    {% for item in seq %}
        <li>{{ item }}</li>
    {% endfor %}
    </ul>
{% endverbatim %}
 

Tout ce qui se trouve entre les deux ne sera pas analysé par Twig Engine et pourra être utilisé par AngularJS.

Bien que je recommande de changer les délimiteurs AngularJS. Sinon, il peut être difficile de faire la distinction entre le code Twig et le code AngularJS lorsque vous consultez vos modèles.

17voto

Iván Guillén Points 149

Je fais face à la même situation, dans mon cas, j'ai décidé de scinder le client et le serveur de projets, j'ai utilisé symfony2 comme côté serveur parce que c'est la simplicité et la convivialité en plus d'autres avantages que m'apporte. En revanche, j'ai créé un simple projet HTML avec AngularJS, c'est utile pour moi, car je veux créer un HTML5 Mobile App avec les mêmes fichiers de client.

Dans ce cas, je pense que le problème principal ici est dans le processus d'authentification et d'autorisation. Vous devez mettre en place un pare-feu sécurisé, pour travailler dans le REPOS (par exemple WSSE: Symfony2: Comment créer un Fournisseur d'Authentification personnalisé) dans le côté serveur.

Et puis la mise en œuvre correspondant dans le côté client (AngularJS), la ressource la plus utile que j'ai trouvé: Github:witoldsz/angulaires-http-auth.

Si vous voulez plus profond de mise en œuvre de votre projet sf2, vous pouvez compiler AngularJS utiliser Assetic des filtres, et le gain de performance dans le chargement des pages.

13voto

gcman105 Points 123

J'ai utilisé le code suivant pour changer les émetteurs AngularJS

Coffeescript:

 # Change the angular delimiters for twig compatability
# and load module with ngResource
WAFapp2 = angular.module("WAFapp2", ['ngResource'], ($interpolateProvider) ->
  $interpolateProvider.startSymbol "{[{"
  $interpolateProvider.endSymbol "}]}"
)    var WAFapp2;
 

ou Javascript:

 var WAFapp2;

WAFapp2 = angular.module("WAFapp2", ['ngResource'], function($interpolateProvider) {
  $interpolateProvider.startSymbol("{[{");
  return $interpolateProvider.endSymbol("}]}");
});
 

puis au sommet de mes mises en page:

 <!DOCTYPE html>
<html lang="en" data-ng-app="WAFapp2">
  <head>
 

puis plus tard, dans la section tag du corps du code HTML, je peux utiliser:

 <ul>
{% for item in seq %}
    <li>{[{ item }]}</li>
{% endfor %}
</ul>
 

Je pense que cela garde les choses plus propres et permet de mélanger facilement les brindilles et les étiquettes angulaires. Cela semble bien fonctionner pour moi.

11voto

pabloRN Points 151

Une bonne solution pour éviter la confusion chez les deux moustaches est la directive basée sur les attributs appelée ng-bind: <p ng-bind="yourText"></p> est identique à <p>{{yourText}}</p>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X