Как предотвратить слим рендеринг страницы дважды после ответа http 200 - PullRequest
0 голосов
/ 23 июня 2019

Когда я загружаю свой проект в свое веб-пространство, каждая страница загружается дважды при печати заголовка HTTP / 1.1 200 OK. Это происходит только после того, как я начал использовать slim v3 и не происходит в локальной среде с XAMPP.

Я предполагал, что мои маршруты отключены и будут проходить через средство визуализации дважды, поэтому я распределил все маршруты по группам и добавил аутентификацию промежуточного программного обеспечения. Но ошибка остается прежней.

Вывод на моем веб-пространстве выглядит следующим образом

<html>
    <head>
        <!-- title -->
        <!-- meta -->
        <!-- some styles -->
    </head>
    <body>
        <!-- content -->
        <!-- js -->

        HTTP/1.1 200 OK
        Content-Type: text/html; charset=UTF-8
        Content-Length: 6742

        <!-- title -->
        <!-- meta -->
        <!-- some styles -->
        <!-- content -->
        <!-- js -->
    </body>
</html>

мои маршруты выглядят так:

$app = new App();

$app->group('/home', function () use ($app) {
    $app->get('', function (Request $request, Response $response) {
        $response->write((new HomeController($request, $response))->index());
    });
})->add(function (Request $request, Response $response, Route $route) {
    return Router::handleAccess($request, $response, $route);
});

echo $app->run();

// This is in the Router class
public static function handleAccess($request, $response, $route)
{
    if (!IdentityModel::isLoggedIn()) {
        $response->getBody()->write('Forbidden');

        return $response->withStatus(403);
    }

    return $response = $route($request, $response);
}

Ожидаемый вывод, который я должен получить с моего веб-сервера, а фактический вывод в моей локальной среде выглядит следующим образом

<html>
    <head>
        <!-- title -->
        <!-- meta -->
        <!-- some styles -->
    </head>
    <body>
        <!-- content -->
        <!-- js -->
    </body>
</html>

1 Ответ

0 голосов
/ 23 июня 2019

Попробуйте заменить это:

echo $app->run();

с этим:

$app->run();
...