I am trying to use the ValidationErrorsMiddleware.php class as a middleware, so I added the following code to my bootstrap/app.php:
$app->add(new App\Middleware\ValidationErrorsMiddleware($container));
I got the following errors after the above code is added to my app.php:
Fatal error: Uncaught exception 'RuntimeException' with message 'Unexpected data in output buffer. Maybe you have characters before an opening <?php tag?' in C:\wamp64\www\authentication\vendor\slim\slim\Slim\App.php on line 552
RuntimeException: Unexpected data in output buffer. Maybe you have characters before an opening <?php tag? in C:\wamp64\www\authentication\vendor\slim\slim\Slim\App.php on line 552
Just in case, anyone needs to look at the code of my classes and app.php, I have included them down here
ValidationErrorsMiddleware.php
<?php
namespace App\Middleware;
class ValidationErrorsMiddleware extends Middleware {
public function __invoke($request, $response, $next) {
var_dump('middleware');
$response = $next($request, $response);
return $response;
}
}
Middleware.php
<?php
namespace App\Middleware;
class Middleware {
protected $container;
public function __construct($container) {
$this->container = $container;
}
}
App.php
<?php
session_start();
require __DIR__ . '/../vendor/autoload.php';
$app = new \Slim\App([
'settings' => [
'determineRouteBeforeAppMiddleware' => false,
'displayErrorDetails' => true,
'db' => [
// Eloquent configuration
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'phpdb',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
]
],
]);
$container = $app->getContainer();
$app->add(new App\Middleware\ValidationErrorsMiddleware($container));
require __DIR__ . '/../app/routes.php';
I've fixed my problem doing this:
return [
'settings' => [
// Slim Settings
'determineRouteBeforeAppMiddleware' => true,
'displayErrorDetails' => true,
'addContentLengthHeader' => false,
I added the attribute addContentLengthHeader with the value false in the settings array.
But I still did not understand what this is for
UPDATE
This problem happens because of the line var_dump(middleware) thats changes the content length of the response. My solution was just a hack. Thanks to @iKlsR for the right answer.