Skip to content

Commit

Permalink
created layout.phtml, update index.php and all forms
Browse files Browse the repository at this point in the history
  • Loading branch information
Bosun18 committed Dec 12, 2023
1 parent d77d4cc commit b1e156f
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 138 deletions.
55 changes: 39 additions & 16 deletions public/index.php
Original file line number Diff line number Diff line change
@@ -1,17 +1,18 @@
<?php

use Slim\Factory\AppFactory;
use DI\Container;
use Slim\Factory\AppFactory;
use Slim\Routing\RouteContext;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Slim\Middleware\MethodOverrideMiddleware;
use Slim\Flash\Messages;
use Carbon\Carbon;
use Slim\Views\PhpRenderer;
use Valitron\Validator;
use Bosun\PhpProject9\Connect;
use GuzzleHttp\Client;
use Valitron\Validator;
use Carbon\Carbon;
use GuzzleHttp\Exception\ClientException;
use GuzzleHttp\Exception\ConnectException;
use GuzzleHttp\Exception\RequestException;
use GuzzleHttp\Exception\ServerException;
use DiDom\Document;

Expand All @@ -29,29 +30,51 @@
}

$container = new Container();
$container->set('renderer', function () {
return new PhpRenderer(__DIR__ . '/../templates');

$app = AppFactory::createFromContainer($container);

$app->add(function (ServerRequestInterface $request, RequestHandlerInterface $handler) use ($container) {
$routeContext = RouteContext::fromRequest($request);
$route = $routeContext->getRoute();

$container->set('routeName', $routeName = !empty($route) ? $route->getName() : '');

return $handler->handle($request);
});

$container->set('flash', function () {
return new Messages();
});

$container->set('router', $app->getRouteCollector()->getRouteParser());

$container->set('renderer', function () use ($container) {
$renderer = new PhpRenderer(__DIR__ . '/../templates');
$renderer->setLayout('layout.phtml');
$renderer->addAttribute('router', $container->get('router'));
$renderer->addAttribute('flash', $container->get('flash')->getMessages());
$renderer->addAttribute('routeName', $container->get('routeName'));
return $renderer;
});

$container->set('pdo', function () {
return (new Connect())->getConnection();
});

$container->set('client', function () {
return new Client();
});

$app = AppFactory::createFromContainer($container);
$app->addRoutingMiddleware();

$app->addErrorMiddleware(true, true, true);
$app->add(MethodOverrideMiddleware::class);
$router = $app->getRouteCollector()->getRouteParser();

$app->get('/', function ($request, $response) {
return $this->get('renderer')->render($response, 'main.phtml');
})->setName('main');

$app->post('/urls', function ($request, $response) use ($router) {
$app->post('/urls', function ($request, $response) {
$urls = (array)$request->getParsedBody();
$validator = new Validator($urls['url']);
$validator->rule('required', 'name')->message('URL не должен быть пустым')
Expand Down Expand Up @@ -85,15 +108,15 @@
$existedUrlId = (string)($pdo->query($query)->fetchColumn());

$this->get('flash')->addMessage('success', 'Страница уже существует');
return $response->withRedirect($router->urlFor('show', ['id' => $existedUrlId]));
return $response->withRedirect($this->get('router')->urlFor('show', ['id' => $existedUrlId]));
}

$query = "INSERT INTO urls (name, created_at) VALUES ('$name', '$createdAt')";
$pdo->exec($query);
$lastId = $pdo->lastInsertId();

$this->get('flash')->addMessage('success', 'Страница успешно добавлена');
return $response->withRedirect($router->urlFor('show', ['id' => $lastId]));
return $response->withRedirect($this->get('router')->urlFor('show', ['id' => $lastId]));
} catch (PDOException $e) {
echo $e->getMessage();
}
Expand Down Expand Up @@ -125,7 +148,7 @@
return $response->getBody()->write("Не удалось подключиться")->withStatus(404);
})->setName('show');

$app->post('/urls/{url_id:[0-9]+}/checks', function ($request, $response, $args) use ($router) {
$app->post('/urls/{url_id:[0-9]+}/checks', function ($request, $response, $args) {
$urlId = $args['url_id'];
$pdo = $this->get('pdo');
$query = "SELECT name FROM urls WHERE id = $urlId";
Expand All @@ -145,10 +168,10 @@
$statusCode = $e->getResponse()->getStatusCode();
$this->get('flash')->addMessage('error', 'Ошибка ' .
$statusCode . ' при проверке страницы (внутренняя ошибка сервера)');
return $response->withRedirect($router->urlFor('show', ['id' => $urlId]));
return $response->withRedirect($this->get('router')->urlFor('show', ['id' => $urlId]));
} catch (GuzzleHttp\Exception\GuzzleException) {
$this->get('flash')->addMessage('error', 'Ошибка при проверке страницы (Connection timed out)');
return $response->withRedirect($router->urlFor('show', ['id' => $urlId]));
return $response->withRedirect($this->get('router')->urlFor('show', ['id' => $urlId]));
}
$document = new Document((string) $result->getBody());
$h1 = optional($document->first('h1'))->text();
Expand All @@ -164,7 +187,7 @@
VALUES (?, ?, ?, ?, ?, ?)";
$statement = $pdo->prepare($query);
$statement->execute([$urlId, $statusCode, $h1, $title, $description, $createdAt]);
return $response->withRedirect($router->urlFor('show', ['id' => $urlId]));
return $response->withRedirect($this->get('router')->urlFor('show', ['id' => $urlId]));
});
$app->get('/urls', function ($request, $response) {
$pdo = $this->get('pdo');
Expand Down
49 changes: 49 additions & 0 deletions templates/layout.phtml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Анализатор страниц</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body class="min-vh-100 d-flex flex-column">
<header class="flex-shrink-0">
<nav class="navbar navbar-expand-md navbar-dark bg-dark px-3">
<a class="navbar-brand" href="/">Анализатор страниц</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="/">Главная</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/urls">Сайты</a>
</li>

</ul>
</div>
</nav>
</header>
<?php if (count($flash) > 0) : ?>
<?php foreach ($flash as $messages) : ?>
<?php foreach ($messages as $message) : ?>
<div class="alert alert-<?= $alert ?>" role="alert"><?= $message ?></div>
<?php endforeach ?>
<?php endforeach ?>
<?php endif ?>

<?= $content ?>

<footer class="border-top py-3 mt-5 flex-shrink-0">
<div class="container-lg">
<div class="text-center">
<a href="https://hexlet.io/pages/about" target="_blank">Hexlet</a>
</div>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>
38 changes: 0 additions & 38 deletions templates/main.phtml
Original file line number Diff line number Diff line change
@@ -1,31 +1,3 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Анализатор страниц</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
</head>
<body class="min-vh-100 d-flex flex-column">
<header class="flex-shrink-0">
<nav class="navbar navbar-expand-md navbar-dark bg-dark px-3">
<a class="navbar-brand" href="/">Анализатор страниц</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" href="/">Главная</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/urls">Сайты</a>
</li>
</ul>
</div>
</nav>
</header>
<main class="flex-grow-1">
<div class="container-lg mt-3">
<h1></h1>
Expand All @@ -50,13 +22,3 @@
</div>
</div>
</main>
<footer class="border-top py-3 mt-5 flex-shrink-0">
<div class="container-lg">
<div class="text-center">
<a href="https://hexlet.io/pages/about" target="_blank">Hexlet</a>
</div>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
</body>
</html>
46 changes: 0 additions & 46 deletions templates/show.phtml
Original file line number Diff line number Diff line change
@@ -1,39 +1,3 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Анализатор страниц</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body class="min-vh-100 d-flex flex-column">
<header class="flex-shrink-0">
<nav class="navbar navbar-expand-md navbar-dark bg-dark px-3">
<a class="navbar-brand" href="/">Анализатор страниц</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="/">Главная</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/urls">Сайты</a>
</li>

</ul>
</div>
</nav>
</header>
<?php if (count($flash) > 0) : ?>
<?php foreach ($flash as $messages) : ?>
<?php foreach ($messages as $message) : ?>
<div class="alert alert-<?= $alert ?>" role="alert"><?= $message ?></div>
<?php endforeach ?>
<?php endforeach ?>
<?php endif ?>
<main class="flex-grow-1">
<div class="container-lg mt-3">
<h1>Сайт: <?= $page['name'] ?></h1>
Expand Down Expand Up @@ -83,13 +47,3 @@
</table>
</div>
</main>
<footer class="border-top py-3 mt-5 flex-shrink-0">
<div class="container-lg">
<div class="text-center">
<a href="https://hexlet.io/pages/about" target="_blank">Hexlet</a>
</div>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>
38 changes: 0 additions & 38 deletions templates/urls.phtml
Original file line number Diff line number Diff line change
@@ -1,31 +1,3 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Анализатор страниц</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
</head>
<body class="min-vh-100 d-flex flex-column">
<header class="flex-shrink-0">
<nav class="navbar navbar-expand-md navbar-dark bg-dark px-3">
<a class="navbar-brand" href="/">Анализатор страниц</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav"
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="/">Главная</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="/urls">Сайты</a>
</li>
</ul>
</div>
</nav>
</header>
<main class="flex-grow-1">
<div class="container-lg mt-3">
<h1>Сайты</h1>
Expand All @@ -51,13 +23,3 @@
</div>
</div>
</main>
<footer class="border-top py-3 mt-5 flex-shrink-0">
<div class="container-lg">
<div class="text-center">
<a href="https://hexlet.io/pages/about" target="_blank">Hexlet</a>
</div>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>

0 comments on commit b1e156f

Please sign in to comment.