gpt4 book ai didi

zend-framework - 使用基本 Controller 时,如何在 preDispatch 或 Action 初始化中处理 Zend_Exception?

转载 作者:行者123 更新时间:2023-12-04 06:46:11 24 4
gpt4 key购买 nike

Zend Framework manual 中所述,我创建了一个基本 Controller 。

Subclassing the Action Controller

By design, Zend_Controller_Action must be subclassed in order to create an action controller. At the minimum, you will need to define action methods that the controller may call.

Besides creating useful functionality for your web applications, you may also find that you're repeating much of the same setup or utility methods in your various controllers; if so, creating a common base controller class that extends Zend_Controller_Action could solve such redundancy.

但事实证明,没有从基础中正确调用异常...要复制它,请创建一个文件:

/path/to/workspace/library/Joe/Controller.php

然后:

class Joe_Controller extends Zend_Controller_Action
{
public function init()
{
Throw new Zend_Exception('test', 500);
parent::init();
}
}

然后在你的 Controller 目录中,IndexController.php 扩展了基础:

class IndexController extends Joe_Controller
{

你会发现异常没有被捕获。

但是,如果您不扩展基本 Controller ,则在 init 或 preDispatch 中抛出异常,它将被捕获并转发给 ErrorController。

有人知道如何从 Base Controller 捕获异常吗?

谢谢。

更新以另一种方式解决这个问题

在查看了关于如何构建目录的各种文章和官方文档之后,我将基本 Controller 放在 library/Joe/中......但也许这就是问题的一部分......手册中没有指导关于如何命名和放置基本 Controller 。拥有基础 Controller 的专家做什么?

另一个更新

再看一下我的代码,并在网上阅读,似乎建议的人应该是:

抽象类 Joe_Controller_Action 扩展 Zend_Controller_Action。

除了改变它并没有解决问题...

现在考虑到有文章建议使用基本 Controller ,包括手册,这会被认为是 Zend Framework 中的错误吗?

要复制,只需在基础 init 或 preDispatch 中抛出任何类型的 Zend_Exception。想象一下,您在那里轮询数据库,(这就是我正在做的)......并且数据库已关闭。没有错误 Controller 。这不是一个好情况,除非我做错了什么。

我怀疑这是一个新错误...我不记得在 Zend_Application 之前有这个问题,我从 ZF 1.5 开始就一直在使用基本 Controller 。

最佳答案

有两个想法:

  1. 默认模块中的 Controller 名称通常命名为SomethingController。您的名字 Joe_Controller 表示模块 Joe 和一个 Controller 名称。

  2. 在路由/调度中,它不会在调度到 Controller 之前寻找匹配的action吗?由于示例没有任何操作,您是否会触发 ControllerNotFound 异常?

只是抛出一些想法。

关于zend-framework - 使用基本 Controller 时,如何在 preDispatch 或 Action 初始化中处理 Zend_Exception?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3774768/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com