Zend中的多个动作上下文

时间:2011-06-02 20:58:07

标签: php zend-framework

我是Zend的新手,正在开发一个项目,需要三个上下文来执行特定操作。通常会使用标准上下文,AJAX调用的AJAX上下文,最后是打印友好的上下文。目标是让每个人都拥有自己的视图,因此使用的视图文件类似于:

/action_name.phtml /action_name.ajax.phtml /action_name.print.phtml

我看了http://framework.zend.com/manual/en/zend.controller.actionhelpers.html并提出了:

public function init()
{
    // add any necessary context switching here
    $contextSwitch = $this->_helper->getHelper('AjaxContext');
    $contextSwitch->addActionContext('history', 'html')
        ->initContext();
    //need to add another context for the print view
    $this->_helper->getHelper('contextSwitch')->addActionContext('history','print')->initContext();
}

我确信前两行有效,但我不确定我是否以正确的方式处理打印上下文,因为在示例中第二个参数通常是文件类型,如JSON,XML,HTML等我是以正确的方式处理事情还是我应该做的其他事情?

2 个答案:

答案 0 :(得分:2)

这是documentation中的所有内容。如果您想要自定义上下文,则必须先添加它们:

$this->_helper
     ->getHelper('contextSwitch')
     ->addContext('print', array(
           // context options go here
       ))
     ->addActionContext('history', 'print')
     // more addActionContext()s goes here
     ->initContext();

答案 1 :(得分:0)

您可能会做的不是使用打印视图的上下文,而是在/print/1这样的网址中有一个参数。然后在控制器操作中,检查该参数是否为true,如果是,则渲染“print”视图脚本而不是常规视图脚本。