In my router.php i have enabled the json extension with Routing File Extensions like this
Router::prefix('api', function (RouteBuilder $routes) {
$routes->extensions(['json']);
$routes->fallbacks('DashedRoute');
});
All is working good. When i want to give a error message i use this JSON structure
{
"data": {
"error": "Please provide username"
}
}
When i throw a ForbiddenException i got structure like this
{
"message": "Forbidden",
"url": "/sfworxerp/api/v1/attendances/getEmployeesAttendance.json",
"code": 403
}
But i need it in this format.
{
"data": {
"error": "Forbidden",
"code": 403
}
}
I have done so far
I have created a custom ExceptionRenderer like this
namespace App\Error;
use Cake\Error\ExceptionRenderer;
class AppExceptionRenderer extends ExceptionRenderer
{
public function forbidden($error)
{
return 'test';
}
}
and added it to my app.php file
'Error' => [
'errorLevel' => E_ALL & ~E_DEPRECATED,
'exceptionRenderer' => 'App\Error\AppExceptionRenderer',
'skipLog' => [],
'log' => true,
'trace' => true,
],
When i change the value for string 'test' to an array it throw error
Fatal error: Call to a member function send() on a non-object in F:\public_html\sfworxerp\vendor\cakephp\cakephp\src\Error\ErrorHandler.php on line 186