加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

休息 – Symfony2和单页面应用程序使用像AngularJS这样的框架

发布时间:2020-12-17 08:06:23 所属栏目:安全 来源:网络整理
导读:(如果这不是发布这种问题的正确的地方,我会很高兴地在其他地方发布) 我正在尝试构建一个交互式Web应用程序来管理公司资源。 我有Symfony2的经验,但我用这个新的应用程序打了墙。 我想使这个应用程序在客户端相当互动。几乎完整的单一网页应用程序。 我以前
(如果这不是发布这种问题的正确的地方,我会很高兴地在其他地方发布)

我正在尝试构建一个交互式Web应用程序来管理公司资源。
我有Symfony2的经验,但我用这个新的应用程序打了墙。

我想使这个应用程序在客户端相当互动。几乎完整的单一网页应用程序。
我以前的Web应用程序通常只会使用具有CRUD页面的典型MVC模式。

在这些简单的应用程序中,我会有

/employees/
/employees/create
/employees/detail/45
/employees/update/45
/employees/delete/45

在这种应用中使用symfony会给我很多的优势:

>路由
>安全(CSRF令牌)
> FormTypes和Form处理
>验证
>与学说融合
>枝

特别是在Twig中这样的功能非常清爽(因为我的模型被构建为Doctrine实体):

<p>{{ employee.getCurrentTask().description }}</p>

我现在面临的问题是,我觉得Symfony2并不是真正为单一网页应用程序构建的。一旦我尝试添加一些Ajax功能,我遇到了这些问题:

> CSRF令牌无效
> jQuery中不可重复使用的视图/表示逻辑
>在html中添加数据属性来获取id等等…

然后我看着Knockout.js和Angularjs,但是我觉得失去了教条和枝条的所有优点。我必须在客户端重建我的模型,并且必须在两个不同的位置保持它们。

所以我想出了这个想法:

>使用Symfony2模型和控制器将数据保存到数据库,但是让symfony中的控制器只发送JSON并接收JSON(FOSRestBundle可能?)
>使用像AngularJS或KnockoutJS这样的框架在客户端重建JSON数据,以使用双向绑定。

但是,如何处理问题,如Doctrine2关系,表单验证,Symfony已经解决的CSRF,但如果我使用前端js框架,则无法使用?

欢迎所有的建议!

关于JSON,序列化和模型的一些话

西蒙,我面临着同样的问题和问题。首先喜欢肯已经提到过。您不需要重建任何模型。更好地使用FosRestBundle和/或JMS Serializer。它将关系转换成JSON对象。这个对象通过api传输到你的前端,你可以像在twig一样使用它们,当你使用这样的angular.js

{[{ user.username }]}

与树枝一样。但请记住,您必须为角度设置自定义括号,因为默认情况下它使用与twig相同。

路由

你谈论一个单一的页面应用程序,所以symfony的路由保持在一个低的水平,几乎没有刷新页面。相反,您必须使用前端框架的路由,因为我只熟悉angular.js,我给出了一个有角度的例子:

app.config(function($routeProvider,$interpolateProvider) {

    //here you go,custom brackets
    $interpolateProvider.startSymbol('{[{');
    $interpolateProvider.endSymbol('}]}');

    $routeProvider.when('/user',{
        controller: UserController,templateUrl: Routing.generate('suser_list')
    }).when('/ticket',{
        controller: TicketController,templateUrl: Routing.generate('ticket_list')
    });
});

当你打了一个链接

<a href="#/ticket">Go to tickets</a>

AngularJ将知道要触发的前端控制器。很好的东西,没有页面重新加载。还可以看看FosJSRoutingBundle.它允许您在javascript中生成symfony路由,我使用它们将js控制器与数据推入的html模板进行链接。

FormTypes,Form处理,验证

那么当你使用像cornerjs这样的前端框架时,你的symfony表单类型是无用的。但我不确定记住数据是通过api推送和拉出来的,我认为这对于形式类型来处理这种混杂是一件困难的事情。

对于验证,您可以使用angular的实时验证,或者在后台使用symfony的验证,没有问题。使用客户端和服务器端验证可能是一件好事。

枝条

树枝脱离了比赛。所有数据都在客户端呈现,而不是像服务器一样在服务器端渲染。但是,如果您的应用程序确实是单页应用程序,那只是这种情况。当然,你可以使用twig,但只有重新加载整个页面时才会刷新。

与教义融合

您仍然可以在后台使用原则。你有关于教义和SPA的具体问题吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读