Php Laravel-来自帮助程序的返回响应
我正在使用Laravel5.2创建一个公共API。为了缩短控制器中的代码,我创建了几个帮助函数,其中一个是返回API调用响应的函数,如下所示:Php Laravel-来自帮助程序的返回响应,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我正在使用Laravel5.2创建一个公共API。为了缩短控制器中的代码,我创建了几个帮助函数,其中一个是返回API调用响应的函数,如下所示: if (! function_exists('buildResponse')) { function buildResponse($data) { return response()->json($data)->header('foo', 'bar'); } } 这是我从控制器中调用它的方式: pub
if (! function_exists('buildResponse'))
{
function buildResponse($data)
{
return response()->json($data)->header('foo', 'bar');
}
}
这是我从控制器中调用它的方式:
public function registration()
{
buildResponse(['a' => 'Success']);
}
然而,这不起作用。仅当我在函数前面添加一个return
时,它才起作用
public function registration()
{
return buildResponse(['a' => 'Success']);
}
有人可能会说,“好吧,那么只需包含返回值
!”。问题是,此特定函数将由另一个助手函数调用,例如:
if (! function_exists('throwResponseCode'))
{
/**
* Throws a response code to the client.
* @param $code
* @return mixed
*/
function throwResponseCode($code)
{
switch ($code) {
case '101':
$data[$code] = 'Unable to establish a database connection';
return buildResponse($data);
// Other cases here
}
}
}
是否有任何方法可以从helper函数向客户端发送响应?简短回答,否。不是直接发送 返回的目的是完成函数并给出结果。Laravel将控制器的返回值视为响应,因此其他函数无法使用返回来完成此操作
这是有办法的。考虑一下这个。创建一个,在控制器生成响应后工作,即在第一行调用
$next($request)
。在这里,您可以根据需要更改响应。要将助手连接到此中间件,可以使用静态方法或属性。中间件的逻辑是,如果有人在中间件的静态属性中放入了一些东西,比如,$response
,那么就发送这个,而不是控制器响应。保持它简单bro改变
return response()->json($data)->header('foo', 'bar');
至
return response()->json($data)->header('foo', 'bar')->send();
它几乎起作用了!我只需要控制器在发送响应后完成其执行。添加一个
die()
并不能完成它,我也不认为这是一种优雅的完成方式。是的。向浏览器发送响应后,不应执行任何操作