如何在Kohana中停止执行请求?

时间:2010-09-24 21:22:49

标签: php exception-handling request kohana-3

假设我有一个带有before函数的控制器模板,如此...

public function before()
  {
     parent::before();
     if ($this->request === Request::instance()) 
     {
         // its a main request, throw an exception or redirect
         Request::instance()->redirect('/');
     }
     else
     {
        // ok
     }
  }

但是,假设我不想重定向,我想停止请求流程,什么也不做。

这是一个例外吗?有一种简单的方法,比如Request::die();

编辑::我实际上不想暂停请求流,只是阻止此控制器执行任何操作。很可能这个控制器是从另一个控制器调用的,我想将控制权传递给调用控制器。'

谢谢!

2 个答案:

答案 0 :(得分:1)

1.使用例外(尚未测试):

try
(
   Request->instance()->execute();
}
catch (MyRequest_Exception $e)
{
   // do what you want
}

echo Request->instance()->send_headers->response();

// somewhere in before()
if ($error)
{
   throw new MyRequest_Exception($errortext);
}
  1. 更改操作名称:

    $这 - >请求 - >动作( '遗忘'); //重定向到无效的“遗忘”动作

答案 1 :(得分:0)

您可以在before()中设置一个类变量:

$this->execute = false;

然后在你的行动中:

public function action_example()
{
    if (!$this->execute) return;
    // etc
}