diff --git a/app/Text/TextController.php b/app/Text/TextController.php
deleted file mode 100644
index 500986e..0000000
--- a/app/Text/TextController.php
+++ /dev/null
@@ -1,53 +0,0 @@
-textRepository->getAll();
-
- $data = array_map(fn($text) => [
- 'id' => $text->getId(),
- 'name' => $text->getName(),
- ], $texts);
-
- $response->getBody()->write(json_encode($data));
- return $response->withHeader('Content-Type', 'application/json');
- }
-
- public function createText(
- Request $request,
- Response $response,
- CreateText $createTextUseCase,
- ): Response {
- $data = $request->getParsedBody();
- $name = $data['name'] ?? '';
-
- if (!empty($name)) {
- $text = $createTextUseCase->execute(new CreateTextRequest(
- name: $name,
- ));
-
- $response->getBody()->write(json_encode([
- 'id' => $text->getId(),
- 'name' => $text->getName(),
- ]));
- return $response->withHeader('Content-Type', 'application/json');
- }
-
- $response->getBody()->write(json_encode(['error' => 'Name is required']));
- return $response->withStatus(400);
- }
-}
diff --git a/app/View/ViewController.php b/app/View/ViewController.php
index 0ee00ea..e6c6196 100644
--- a/app/View/ViewController.php
+++ b/app/View/ViewController.php
@@ -2,10 +2,19 @@
namespace App\View;
+use App\Text\CreateTextDto;
+use App\Text\TextRepository;
+use App\Text\UseCases\CreateText;
+use App\Text\UseCases\CreateTextRequest;
use Psr\Http\Message\ResponseInterface as Response;
+use Psr\Http\Message\ServerRequestInterface as Request;
class ViewController
{
+ public function __construct(
+ private TextRepository $textRepository,
+ ) {}
+
public function admin(Response $response): Response
{
$html = file_get_contents(__DIR__.'/../../views/templates/admin.php', true);
@@ -16,9 +25,34 @@ class ViewController
public function texts(Response $response): Response
{
+ $texts = $this->textRepository->getAll();
+
+ $textsList = '';
+ foreach ($texts as $text) {
+ $textsList .= '
' . htmlspecialchars($text->getName()) . '';
+ }
+
$html = file_get_contents(__DIR__.'/../../views/templates/texts.php', true);
+ $html = str_replace('{{texts}}', $textsList, $html);
$response->getBody()->write($html);
return $response;
}
+
+ public function createText(
+ Request $request,
+ Response $response,
+ CreateText $createTextUseCase,
+ ): Response {
+ $data = $request->getParsedBody();
+ $name = $data['name'] ?? '';
+
+ if (!empty($name)) {
+ $createTextUseCase->execute(new CreateTextRequest(
+ name: $name,
+ ));
+ }
+
+ return $response->withHeader('Location', '/admin/texts')->withStatus(302);
+ }
}
diff --git a/bootstrap/app.php b/bootstrap/app.php
index ddc3dcd..3299b05 100644
--- a/bootstrap/app.php
+++ b/bootstrap/app.php
@@ -4,7 +4,6 @@ use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use DI\Bridge\Slim\Bridge;
use App\View\ViewController;
-use App\Text\TextController;
$container = require __DIR__.'/container.php';
$app = Bridge::create($container);
@@ -14,8 +13,6 @@ $app->addErrorMiddleware(true, true, true);
$app->get('/admin', [ViewController::class, 'admin']);
$app->get('/admin/texts', [ViewController::class, 'texts']);
-
-$app->get('/api/texts', [TextController::class, 'getTexts']);
-$app->post('/api/texts', [TextController::class, 'createText']);
+$app->post('/admin/texts', [ViewController::class, 'createText']);
return $app;
diff --git a/public/js/texts.js b/public/js/texts.js
deleted file mode 100644
index 9421c20..0000000
--- a/public/js/texts.js
+++ /dev/null
@@ -1,28 +0,0 @@
-document.addEventListener('DOMContentLoaded', () => {
- const textsList = document.getElementById('texts-list');
- const form = document.getElementById('texts-form');
-
- async function loadTexts() {
- const res = await fetch('/api/texts');
- const texts = await res.json();
- textsList.innerHTML = texts.map(text => '' + text.name + '').join('');
- }
-
- form.addEventListener('submit', async (e) => {
- e.preventDefault();
- const formData = new FormData(form);
- const res = await fetch('/api/texts', {
- method: 'POST',
- body: formData,
- });
- if (res.ok) {
- const text = await res.json();
- const li = document.createElement('li');
- li.textContent = text.name;
- textsList.appendChild(li);
- form.reset();
- }
- });
-
- loadTexts();
-});
diff --git a/views/templates/texts.php b/views/templates/texts.php
index f8e8d7d..24c2c92 100644
--- a/views/templates/texts.php
+++ b/views/templates/texts.php
@@ -7,11 +7,11 @@
Texts
Back to Admin
-
-