Zend将数据传递给其他视图

时间:2014-03-11 14:27:29

标签: php zend-framework

我尝试过很多像我一样有同样问题的解决方案。但是没有找到可行的解决方案。

我有一个控制器:

event.php

两种观点:

event.phtml
eventList.phtml

我使用eventList通过ajax调用获取数据,所以我想用一个名为" eventlist"的变量填充两个视图。例如。

通常我使用此代码将变量发送到视图:

$this->view->eventList = $events;

但此变量仅在event.phtml中可用。

如何使这个可用于eventlist.phtml? (不添加第二个控制器)

修改 我现在收到此错误

Call to undefined method Page_Event::render() 

功能:

private $_event;

public function init(){
        $dbTable = new Custom_Model_DbTable_Events();
        //Get Events
        $this->_event = $dbTable->getEntries($this->webuser->businessId); 
        $this->index();

    }
public function indexAction(){
        $this->eventList = $this->_event;
        $this->render();
        $this->render('eventlist'); 
    }

如果我使用$this->view->render('event.phtml')eventlist.phtml,则无法传递数据

我使用的是zend版 1

3 个答案:

答案 0 :(得分:2)

您可以使用render()

将变量传递到其他视图
 public function fooAction()
    {
        // Renders my/foo.phtml
        $this->render();

        // Renders my/bar.phtml
        $this->render('bar');
    }

将其复制并粘贴到您的控制器中,并将控制器从event.php重命名为EventController.php

class EventController extends Zend_Controller_Action
{
  private $_event;

  public function init(){
        $dbTable = new Custom_Model_DbTable_Events();
        //Get Events
        $this->_event = $dbTable->getEntries($this->webuser->businessId); 
        $this->index();

    }
  public function indexAction(){
        // You're calling the index.phtml here.
        $this->eventList = $this->_event;
        $this->render('event');
        $this->render('eventlist'); 
    }
 }

答案 1 :(得分:1)

指定只写@Daan

在你的行动中:

$this->view->eventList= $events;
$this->render('eventList'); // for call eventList.phtml

在您的视图中使用:$this->eventList

答案 2 :(得分:0)

您可以使用上面使用的相同代码行在视图本身(eventList.phtml)内渲染它,而不是在控制器中渲染它:

$this->render('event[.phtml]');