2015-02-06 39 views
0

我想創建一個包含子菜單的菜單,每個菜單都以我的Zend控制器命名。我的角度MenuController包含此陣:使用角度變量渲染ZF2部分

$scope.controllerNames = ['controller1', 'controller2', 'controller3']; 

在我看來,我想呈現一個Zend部分這些控制器的每個控制器:

<div ng-repeat="controllerName in menuCtrl.controllerNames">     
    <div id="submenu-{{controllerName}}"> 
     <?php echo $this->partial('path/to/zend/partial/{{controllerName}}.phtml') ?> 
    </div> 
</div> 

我得到正確的DIV ID(例如「submenu- controller1「),但我似乎無法訪問PHP塊中的{{controllerName}}變量。我也嘗試使用ng-include,但部分不是應用程序的公用文件夾的一部分。

有什麼辦法可以在PHP字符串中使用這個角度變量嗎?

回答

0

你不能這樣做。我想你想在php腳本中使用你的angular {{controllerName}}變量。它沒有工作,因爲首先是php,然後是瀏覽器,然後是javascript。所以流看起來像:請求到服務器,PHP生成HTML和發回,瀏覽器解釋什麼PHP發送和呈現網站,當網站呈現角度開始其工作。

你可以嘗試做這樣的事:

$http.get('pathToYourScriptWhichRenderWhatUWant?controller='+{{controllerName}}).success(function(data) { // attach data to DOM }) 

但更好的方法是保持在前端和後端,從僅要求數據的所有模板,你並不需要保存和生成HTML後臺如果您得到的角度:)

+0

_you不需要保留並在後端生成HTML如果你有angular_ - 其實我做,因爲我正在建立一個單一的頁面應用程序,我需要我的意見,從我的控制器獲取數據。我真的不想做一個Ajax請求,所以我想我會在我的phtml視圖中擁有這個控制器名稱數組。謝謝你的回答! – skirato 2015-02-06 10:18:09

+0

@skirato所以你想製作單頁面應用程序而不與後端進行Ajax通信?這是一個靜態頁面?如果沒有,當用戶改變一些數據時,你怎麼不想更新數據庫和頁面數據?重新加載整個應用程序? – szapio 2015-02-06 10:21:21

+0

對不起,我的意思是我不想使用ajax來渲染菜單局部的唯一目的,當然我會在應用程序中使用ajax :) – skirato 2015-02-06 10:24:39