He estado enfrentando una gran cantidad de problemas tratando de hacer que Symfony y AngularJS trabajen juntos. Sin embargo, mientras trabajaba en él he aprendido algunas cosas que pueden ayudarle a:
- para separar las expresiones AngularJS
{{ variable }}
de la ramita llaves tiene tres alternativas:
a).Utilice las comillas alrededor de las expresiones AngularJS {{ '{{ variable }}' }}
b). Rodee su código AngularJS con {% verbatim %} your code {% endverbatim %}
c). Use AngularJS interpolateProvider
servicio
angular.module('myApp', []).config(function($interpolateProvider){
$interpolateProvider.startSymbol('{[{').endSymbol('}]}');
});
- En el archivo js, ramita no puede generar la URL para usted. Para esto puedes usar "friendsofsymfony/jsrouting-bundle". Después de instalarlo se puede usar como:
$http.get(Routing.generate('route_name', {'id':id}));
Esto no puede trabajar para usted para su presentación, ¿por qué? Una cosa que debe saber sobre $ http.post es que no envía los datos como "Datos de formulario" sino como "Solicitud de carga útil", que es la forma normal de transmitir datos a través de HTTP POST. El problema es que esta "forma normal" no es equivalente a la presentación de un formulario, lo que causa problemas al interpretar datos con el objeto de solicitud de Symfony.
uso de esta forma:
$http.put(url, $.param({foo: 'bar'}), {
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
Cuando se desea saber si la petición es una petición AJAX dentro del controlador, que suelen utilizar el método isXmlHttpRequest(). El problema es que Angular no identifica sus solicitudes como solicitudes XMLHttpRequest. Utilice:
var app = angular.module('myModule', []); app.config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest'; }]);
bien la creación de formas se puede elegir para mostrar el formulario a través AngularJS y dejar formularios de Symfony para manejar la petición. Para que usted necesita para desactivar la protección CSRF:
public function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setDefaults(array( 'data_class' => '...', 'csrf_protection' => false )); }
Ahora su Formulario de Symfony puede recibir datos de una petición de encargo angular.
Todas las cosas a un lado, todavía no estoy seguro de una cosa, si mostrar su formulario con Symfony o AngularJS.
Espero que esto ayude.
También podría cambiar las etiquetas de interpolación de angularjs para su aplicación –
@intrepion ¿Cómo hacer que las directivas AngularJS funcionen con los campos FormType de Symfony, por ejemplo? . ¿CollectionType? Tengo un problema http://stackoverflow.com/questions/38389740/customising-symfony2-collectiontype-form-field-display – utkarsh2k2