Zend ErrorController访问初始控制器变量

时间:2011-06-08 12:10:59

标签: php zend-framework error-handling

我有一个错误控制器,我在其中发送有关未处理异常的电子邮件。我想输出一些驻留在'原始'控制器(E.G indexController)中的变量值。

如何从ErrorController访问这些值? E.G $indexController->attr

2 个答案:

答案 0 :(得分:1)

好吧,您可以从错误控制器的视图对象访问原始控制器操作的视图变量。您可以将所需的值作为视图变量发送(如果可能),然后在错误控制器中使用它们:

// In your original controller's action
$this->view->customVariable1 = 123;
$this->view->customVariable2 = 'abc';

// In your error controller's error action
$cv1 = $this->view->customVariable1;
$cv2 = $this->view->customVariable2;

我可以说这很有效,因为我已经测试过在error.phtml中显示我的视图变量,它会显示原始控制器的视图变量。

现在,如果您需要更多控制权,可以使用会话来存储这些值。

答案 1 :(得分:0)

我认为这是不可能的,因为在调度相应的操作后,原始控制器对象被销毁(Zend_Controller_Dispatcher_Standard,ZF 11.7的第314行)。

但是,如果你在控制器中捕获异常,你可以将有问题的变量推送到全局注册表(例如Zend_Registry),然后重新抛出异常,以便它被错误控制器捕获;一旦错误控制器执行,它就可以从全局注册表访问这些变量。