2011-07-13 33 views
0

有没有一种方法,我们可以从另一个函数获取变量控制器中的当前函数和用户设置函数在相应的视图文件中使用?Cakephp从另一个函数变量继承控制器变量功能

对不起你们我的意思是通过查看文件的变量另一种观点的文件...下面是代码...

function get_random_color() 

{ $ C = “”; ($ i = 0; $ i < 6; $ i ++) {c。= dechex(rand(0,15)); } return“#$ c”; } $ i = 0; // debug($ trips); foreach($ trip为$ trip){ $ color = get_random_color();

$numItems = count($trip['trip']['coords']); 
if($numItems > 3){ 
    $x = 0; 
    echo 'var flightPlanCoordinates'.$i.' = ['; 
    foreach($trip['trip']['coords'] as $coords) { 

     if($x+1 == $numItems) { 
      echo 'new google.maps.LatLng('.$coords['latitude'].','.$coords['longitude'].') '; 
     } 
     else { 
      echo 'new google.maps.LatLng('.$coords['latitude'].','.$coords['longitude'].'), '; 
     } 
     $x++; 
    } 

    /* 
    for($x = 0; $x<sizeof($trip['trip']['coords']); $x++) { 
     echo 'new google.maps.LatLng('.$trip['trip']['coords']['latitude'].','.$trip['trip']['coords']['longitude'].'), '; 
    }*/ 


    echo ']; '; 
    echo 'var flightPath'.$i.' = new google.maps.Polyline({ 
    path: flightPlanCoordinates'.$i.', 
    strokeColor: "'.$colour.'", 
    strokeOpacity: 1.0, 
    strokeWeight: 4 
    });'; 

    echo 'flightPath'.$i.'.setMap(map);'; 

    $i++; 
} 

}

+1

在视图中执行许多逻辑东西并不是很好的风格,因为这会打破MVC模式。只要在控制器或模型中尝试执行它,并尽可能简化视图。 – Young

+0

你想在这里把php变量传入javascript吗?为什么不做你需要在控制器中做的操作,构建一个json对象并将其传递给视图并使用javascript解析它? – Matt

回答

0

你可以做一个requestAction,虽然它被认为是比较慢的方式来获取该数据。如果你提供更多的细节,我可能会给你一个更好的答案。

$this->requestAction('/posts/list'); 

更多requestActions这里:http://book.cakephp.org/view/991/requestAction

+0

'如果在没有缓存的情况下使用requestAction可能会导致性能下降。在控制器或模型中使用是很少合适的。' – Young

+0

我同意并在第一行写了尽可能多的内容,但给出的描述中,将一个变量从一个控制器移到另一个控制器时有点含糊。 – Matt

0

使用Configure class如果你需要在这种情况下,一个全局变量,请求动作应该是一个不错的选择。

+0

这只有在他首先在另一个控制器中时才有效。如果它是需要动态数据的东西,这是行不通的。我更多地解释了这一点,因为我在帖子中,并需要标签中的某些东西,这些标签在标签中有一个功能。 除非我使用配置错误,否则您可以轻松设置会话变量。 – Matt

+0

@ Matt,我认为即使数据是动态的,请求动作仍然可以避免 - 在您的情况下,函数可以放置在标签的模型中,以便我们可以在后控制器中使用标签模型来获取数据。 – Young

+0

有趣。我将不得不更多地使用配置类。我经常使用它来进行调试切换,并在其他情况下使用它。 – Matt

相关问题