2016-01-21 89 views
2
整合

所以我一直在負責構建的API,併爲一個項目一個前端。我得到的唯一真正的要求是我必須使用PHP來構建API。如何Angular2與Symfony的

我在原PHP開發一次,這是一個小2個月的個人項目,這是七年前。所以我查看了可用的框架並繼續使用Symfony。

在前端,我希望能與Angular2向前邁進。

我已經得到了API大多建了,但我現在的問題是服務於Symfony的過程內的角文件。看起來,對於我需要的每條路徑,我都需要在控制器中爲該路線編寫一個動作,而我大部分都可以。但我遇到的最大問題是它總是假設我要Twig作爲我的引擎。所以我無法使用Angular使用的大括號。

這是在所有可能的或已經得到了我自己綁在這種不正確的?

編輯:現在我要與我的包裹在角逐字標籤

{% verbatim %} 
    {{ angular code }} 
{% endverbatim %} 

回答

1

向前邁進,我寧願獨立開發的前端和API。這對我來說是一個API的要點。

看來,對於我需要的每條路徑,我都需要在控制器中爲該路線編寫一個動作,我大部分都可以。

- >真是雪上加霜。

對於樹枝角語法衝突,您可以更改使用interpolateProvider服務的開始和結束插標籤:

angular.module('myApp', []).config(function($interpolateProvider){ 
    $interpolateProvider.startSymbol('{[{').endSymbol('}]}'); 
}); 

看到docs

+2

哎呀,這個問題似乎更爲常見...例如,見[這裏](http://stackoverflow.com/questions/ 13671701/angularjs-twig-conflict-with-double-curly-braces)以獲得更詳細的答案。 –

2

你說:

看來,每一個路徑,我需要我需要寫一個動作 控制器該路線

但angular2用於單頁應用(SPA),所以你只需要一個頁面來提供它: 1路線> 1動作> 1枝模板。

對於這個模板,你可以改變的開始和結束插標籤: https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider

或者使用verbatim樹枝的關鍵字,讓對角插字符: http://twig.sensiolabs.org/doc/tags/verbatim.html

要不是你angular2模板,你不必使用樹枝,也不需要混合兩種模板語言。您的API將數據轉換爲反映模板內部的角度。

和另一好的做法是預編譯裏面$templateCache使用這樣的事情你所有的角模板: https://www.npmjs.com/package/gulp-ng-template

+0

路徑解釋很差。對於每個引用的.js文件,我需要爲它創建一個路由。現在我只是指着一個cdn來簡化它,但我仍然需要爲我的個人app.js等創建一個路徑。 – ELepolt

+0

一個很好的做法是使用像Gulp/Grunt這樣的工具將所有js文件合併爲一個(和許多其他的東西)。你可以把它放在'web'文件夾中,這樣它就可以訪問了,你不需要創建一個symfony路由。然後簡單地添加一個''並且完成了 – bertrandg

+0

事實上,如果symfony只是用來給REST api,那麼你完全可以將你的角度應用程序與它分離。您可以將其放置在不同的文件夾或其他服務器中。 – bertrandg

1

我們正在一個大的Symfony應用角度的UI爲好,並已決定使用API平臺(https://api-platform.com/)。以前,我們使用了FOSRestBundle,但是爲了這個新版本而放棄了這一點。

到目前爲止,我們對這種方法感到滿意。

你問過關於在Symfony中提供Angular文件的問題。我們選擇將它們保存在單獨的回購站中,以便它們甚至可以部署在不同的服務器上。這將是我的建議,當然你可以將Angular文件放在/ web目錄中。但是,這樣做會使部署複雜化。

+0

所以我認爲這是一個「正確」的方法,但對於那些無法承受「重寫」達到這個水平的大型應用程序,我覺得他們需要一起爲臨時組織工作,儘管我知道後來創造了很多重新工作,但沒有時間重新編寫總是介紹一些東西。我也在使用Api-Platform。我們有FOSRest,但是如果使用它的話,它並沒有多大用處。 – Jarvis

1

我也symfony的工作,angular2

怎麼辦,我開始

don't merge two projects as we can do it for angular 1.4 version. 

爲angular2是前端,它支持CLI。

symfony的是後端所以儘量爲服務使用

我建議你應該使用的Symfony2作爲服務

在那裏你可以你添加/編輯/刪除和創建前端路由。

我已經演示angular2與Symfony2的

Github上的url

https://github.com/afeef1915/Angular2

如果最後你

用symfony整合angular2然後將不得不面對路由問題 就像symfony2一樣不瞭解angular2路由。

和樹枝語法很多類似的角度component.html文件