我正在使用FuelPHP的休息控制器。
我正在尝试打破流程并在遇到错误后显示我的响应。
这是我需要的基本流程:
我在“验证”功能中尝试过以下操作,但它只是退出验证功能...然后继续执行请求的初始方法。如何立即停止脚本并显示此响应的内容?
return $this->response( array(
'error_count' => 2,
'error' => $this->data['errors'] //an array of error messages/codes
) );
答案 0 :(得分:2)
这是非常糟糕的做法。如果退出,不仅会中止当前控制器,还会中止框架流程的其余部分。
只需在操作中验证:
// do your validation, set a response and return if it failed
if ( ! $valid)
{
$this->response( array(
'error_count' => 2,
'error' => $this->data['errors'] //an array of error messages/codes
), 400); //400 is an HTTP status code
return;
}
或者如果您想进行中央验证(而不是在控制器操作中),请使用router()方法:
public function router($resource, $arguments)
{
if ($this->valid_request($resource))
{
return parent::router($resource, $arguments);
}
}
protected function valid_request($resource)
{
// do your validation here, $resource tells you what was called
// set $this->response like above if validation failed, and return false
// if valid, return true
}
答案 1 :(得分:0)
我是FuelPHP的新手,所以如果这种方法不好,请告诉我。
如果您希望REST控制器在某个其他位置中断流,而不是在请求的方法返回某些内容时,请使用此代码。您可以更改$ this->响应数组以返回您想要的任何内容。该脚本的主要部分是$ this-> response-> send()方法和exit方法。
$this->response( array(
'error_count' => 2,
'error' => $this->data['errors'] //an array of error messages/codes
), 400); //400 is an HTTP status code
//The send method sends the response body to the output buffer (i.e. it is echo'd out).
//pass it TRUE to send any defined HTTP headers before sending the response body.
$this->response->send(true);
//kill the entire script so nothing is processed past this point.
exit;
有关send方法的更多信息,请查看FuelPHP documentation for the response class.