如何在Zend框架中从Layout到Controller访问数组

时间:2010-09-20 20:48:17

标签: zend-framework

比如在mydefaultlayout.phtml中说我有一个以这种方式声明的数组

$pages['words'] = array( 'APPLE', 'BALL', 'CAT', 'DOG', 'HELL', 'INK', 'PINK');
$pages['letters'] = array( 'A', 'B', 'C', 'D', 'H', 'I', 'K');

Mydefaultlayout.phtml是我在整个应用程序中的默认布局,因此每个控制器都可以使用它。那么如何在我的控制器中访问这些元素$pages['words']$pages['letters']

如何从控制器将它们分配给视图。

Class MyController extends Zend_controller_Action{
    public function indexAction(){
        if($_POST['page']=='ABC'){
            //How do i assign this $pages['words']  and $pages['letters']  to the view  
            $view->myarray = $pages['words'];
            $view->myarray = $pages['letters']; 
        }
    } 
}

我想到的一个解决方案是再次重新定义控制器中的$pages['words']$pages['letters']并将其分配给视图 这是重复代码。如何访问控制器中的$pages['words']$pages['letters']或直接查看

3 个答案:

答案 0 :(得分:1)

您不应该从控制器访问任何视图变量。

最好在模型中定义数据$ page ['words']和$ page ['latters'],并在需要时从控制器和视图中访问它。

答案 1 :(得分:0)

这有点偏离袖口,但为什么在你的布局中定义了数组呢?

如果你需要在任何地方都可以使用它,为什么不在你的bootstrap&然后在需要时将它传递给视图/控制器?

所以在你的引导程序中你可以有这样的东西:

$pages['words'] = array( 'APPLE', 'BALL', 'CAT', 'DOG', 'HELL', 'INK', 'PINK'); 

$pages['letters'] = array( 'A', 'B', 'C', 'D', 'H', 'I', 'K');

$view->pages = $pages;

然后在您的观看中,您可以访问它们:

print_r($this->pages);

希望这有用,只需从记忆​​中获取。匆忙:))

答案 2 :(得分:0)

控制器中的

public function indexAction(){
    $this->view->myarray = array('a','b','c','d');
}
布局中的

<?
foreach($this->myarray  as $key => $value ){
    echo " $key => $value  <br>";
}
?>