说到Ajax,它看起来像Symfony(第2.7节)和AngularJS(第1.4节)并不能很好地融合在一起; - )
我认为有两种方法可以让他们合作 - 我的问题是:哪一种更好?
对于1,这是我发现的最佳指令: http://harmssite.com/2014/09/mixing-angular-and-symfony/
优势:可以在Symfony中使用$form->handleRequest($request);
一次获取所有表单字段。
缺点:无法为value
设置默认<input>
&s,导致AngularJS覆盖它们。解决方案:
app.js
中)。但是如果值来自数据库(即Symfony),你怎么能把它变成app.js
?通过Symfony的模板系统渲染整个app.js
文件? =&GT;看起来对我来说太过分了。ng-init
将其设置在HTML / twig文件中,如下所示:
AngularJS - Value attribute on an input text box is ignored when there is a ng-model used?
=&GT;这是解决方法而非解决方案; - )对于2,主要的缺点是你需要使用$post = $this->getRequest()->getContent();
分别将每个表单字段读入Symfony,如下所示:
AngularsJS POST JSON data to Symfony2
我没有尝试过这种方法,所以我不知道是否还有其他问题; - )
答案 0 :(得分:0)
在摆弄了一段时间之后,我终于找到了解决方案:彻底击出AngularJS!
据我所知,如果您在客户端完全处理表单(或至少主要是),AngularJS只是要走的路。我想,这就是他们所说的单页应用程序(SPA)&#34;。
如果您正在使用Symfony进行表单处理,AngularJS可能会让您的生活变得更加困难,而不是更容易。
我现在使用普通的jQuery for JavaScript,一切都像魅力(包括Ajax),比AngularJS更加轻松。
答案 1 :(得分:0)
如果您只需要使用经典表单(没有Symfony2表单构建器)处理从AngularJS到Symfony2服务器的AJAX请求,您可以使用此包:
qandidate/symfony-json-request-transformer
在composer.json中将其添加为依赖项,并以与经典请求相同的方式处理您的请求(POST和其他方法)。
您可以查看有关此问题的帖子:Handling HTTP Requests from AngularJS to Symfony2
其他提示,要在您的树枝模板中使用AngularJS,请在角度应用中添加:
var app = angular.module('yourApp', [],
function($interpolateProvider){
$interpolateProvider.startSymbol('<%');
$interpolateProvider.endSymbol('%>');
});
这会将您的起始符号从{{
更改为<%
,并将结束符号从}}
更改为%>
在我的情况下,使用AngularJS可以让我的工作更轻松,更有效率,特别是与Symfony后端相结合,但它非常个性化,取决于使用角度的原因/方式。