ZF2控制器特定404错误页面

时间:2014-09-09 04:41:29

标签: php zend-framework2

我有以下控制器

class TitleController extends AbstractActionController {

    public function showAllTitleAction() {
        //Here I've some service that fetch entries from db
        $data = $this->getData();


        if (count($data) == 0) {
            //If data is empty, get 404 code for SEO reasons.
            $this->getResponse()->setStatusCode(404);
        }

        //Although data is empty, go on creating the specific view for this controller
        $viewModel = new ViewModel($data);
        $viewModel->setTemplate('application/title/template');
        return $viewModel;
    }
}

当我在控制器中给出404错误时,我的请求被截获,我得到了默认的404错误页面。但我只想更改HTTP状态代码,而不是内容。 (我将在输出中显示友好消息)

如何防止我的请求被默认的404页面拦截?

感谢。

2 个答案:

答案 0 :(得分:0)

好吧,我真的不明白为什么你会这么想(如果它是404,那么就不应该有任何内容供展示),但为了争论,我想你可以:

  1. 在默认EVENT_DISPATCH_ERROR
  2. 之前注册RouteNotFoundStrategy事件的侦听器
  3. 在该侦听器中停止事件传播并返回您想要的任何内容(请参阅下面的链接)
  4. 你也可以走下去的路线:

    1. 抛出异常而不是更改状态代码,
    2. 为从控制器抛出的异常设置侦听器
    3. 检查异常对象的实例(告诉它除了所有“意外”异常),
    4. 在该侦听器中设置状态代码,也可能使事件循环短路。
    5. 希望能让你走上正轨。

      供参考:

答案 1 :(得分:0)

我最终检查了引导程序事件请求哪个控制器,如果有必要,请分离notfoundstrategy。

在这里,您可以找到我对此问题的解决方案:http://www.cagataygurturk.com/zf2-controller-specific-not-found-page/

相关问题