【问题标题】:How do i access the array from Layout to Controller in Zend framework如何在 Zend 框架中从布局访问数组到控制器
【发布时间】:2011-04-14 21:33:05
【问题描述】:

例如在 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'] 或直接查看

【问题讨论】:

  • 只定义控制器中的字母并将其分配给视图? o.O
  • 如果您只在某些控制器中需要它,那么controller action helper 会很有用。

标签: zend-framework


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在你的控制器中

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

    在你的布局中

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

    【讨论】:

      【解决方案3】:

      这有点不合时宜,但为什么要在布局中定义数组?

      如果您需要让它随处可用,为什么不在引导程序中定义它,然后在需要时将其传递给视图/控制器?

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

      $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);
      

      希望这是有帮助的,只是从记忆中匆匆忙忙:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多