2015-04-17 28 views
1

這裏整合AngularJS我是我有:在Symfony的APP

  • 我有幾捆
  • 的前AngularJS,我有在網絡庫現在

創建一個RESTful Symfony的API這裏是我的路由文件的示例:

$routeProvider. 
    when('/liste-produits', { 
    templateUrl: '../templates/list-products.html', 
    controller: 'ProductListCtrl' 
    }). 
    otherwise({ 
    redirectTo: '/' 
    }); 

事實上,我必須使用「../」。因爲否則它在dev environnement(app_dev.php)中不起作用。當然,當我將它發佈在生產(app.php)時,我不需要添加這個「../」

你們明白我的問題嗎?

因爲我可以從Symfony的工作中獲得資產的路由文件。

我該如何解決這個問題?

+2

如果你有一個web/templates目錄,那麼就沒有問題了。如果您試圖將您的模板存儲在網頁目錄之外,那麼就是沒有趣味。所以不要那樣做角度。 – Cerad

+0

@Cerad我已經把與angularJS(js和模板)有關的所有東西都放到了web目錄中,但這不起作用。當我使用app_dev.php時,我必須使用../你是如何設法使用它的? – julestruong

+1

app_dev應該與角模板無關。您的服務器應設置爲如果網絡下存在文件,則該文件將被傳送。只有當沒有app_dev.php文件被調用時纔會這樣。你使用什麼樣的網絡服務器? – Cerad

回答

2

有一個方法,你在你的基地樹枝文件中定義一個全局變量: Symfony 2:image paths in javascript file with assetic,你可以反過來用於例如AngularJS。

還有一個叫FOSJsRoutingBundle的包,它把你的路由暴露給客戶端,因此也是javascript。這對你來說可能很有趣。

但是還有另一種選擇; - 我親自使用Rein Baarsma發佈的樹枝文件的方法,然後緩存由此產生的javascript

編寫一個request listener相當簡單,它可以將枝條文件每天一次或每當JavaScript文件被刪除時都呈現給JavaScript文件。 對於日常更改顏色的項目,我對樣式表使用了相同的方法。 如果你不緩存它,瀏覽器將重新訪問返回每個頁面上的JavaScript的路由,並重新渲染JavaScript文件,這會增加很多開銷。

+0

我很抱歉,但是「揭露路線」是什麼意思? – julestruong

+0

它將使它們可用於JavaScript,因此您可以生成控制器操作等的URL。有點像在javascript中提供「'''asset'''和'''path'''這樣的小枝函數。 –

+1

看來這正是我想要的感謝 – julestruong

0

您可以簡單地在一個js文件上創建一個帶有視圖的Symfony控制器。這樣,你可以使用樹枝(或PHP)模板函數(如樹枝的路徑()函數)來避免任何奇怪的URL。

在你的控制器:

public function routingAction(Request $request) { 
    $this->render('angular/routing.twig.js'); 
} 

而在你的路由

$routeProvider. 
    when('/liste-produits', { 
    templateUrl: {{ path('product_list') }}, 
    controller: 'ProductListCtrl' 
    }). 
    otherwise({ 
    redirectTo: '/' 
    }); 
+0

你有沒有試過這樣做的任何角發展?通過樹枝傳遞JavaScript文件會導致比解決問題更多的問題。有點像把你的貓扔進火中擺脫跳蚤。 – Cerad

+0

在這個我同意Cerad,嘗試這個,但它沒有工作 – julestruong

+0

我不敢說不。我做的AngularJS開發是用NodeJS開發的。 Symfony也可以很好地工作,但我不認爲我會使用角度路由模塊,而是使用Symfony路由系統。 –