2015-02-06 112 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