是否可以将一些控制器的操作包装在Symfony2中的自定义逻辑中?
我想创建一个“AJAX”控制器,以便处理我的应用程序中的所有AJAX请求。我想从我的操作中删除样板代码,以使应用程序逻辑更轻松。以下是我想通过包装器实现的一些要点:
try ... catch
块中包装动作调用,以捕获所有可能的异常并将输出转换为JSON而不是一般的500 HTML错误页面。所以我可以在客户端优雅地处理它们。如果可以实现这样的包装器,是否也可以在路由的基础上启用它?
这是我的例子:
/**
* It is now.
* @return JsonResponse
*/
public function someAction()
{
try {
// Some business logic here.
$foo = getFoo();
$bar = getBar($foo);
// Sending response.
return new JsonResponse([
'success' => true,
'data' => [
'foo' => $foo,
'bar' => $bar,
],
]);
} catch (\Exception $exception) {
// Handle exception here. Translate error message, etc.
return new JsonResponse([
'success' => false,
'message' => $exception->getMessage(),
'code' => $exception->getCode(),
]);
}
}
/**
* How I want it to be.
* @return array
*/
public function someBetterAction()
{
// Some business logic here.
$foo = getFoo();
$bar = getBar($foo);
// Sending response.
return [
'foo' => $foo,
'bar' => $bar,
];
}
换句话说,我只是想将异常处理和输出格式化移动到包装层,以使动作更轻松。