我尝试过很多像我一样有同样问题的解决方案。但是没有找到可行的解决方案。
我有一个控制器:
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
答案 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]');