假设我有一个带有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();
?
编辑::我实际上不想暂停请求流,只是阻止此控制器执行任何操作。很可能这个控制器是从另一个控制器调用的,我想将控制权传递给调用控制器。'
谢谢!
答案 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 :(得分:0)
您可以在before()
中设置一个类变量:
$this->execute = false;
然后在你的行动中:
public function action_example()
{
if (!$this->execute) return;
// etc
}