Play around with the rendering

This commit is contained in:
Tim
2023-08-15 13:56:04 +02:00
parent 24683e70a8
commit 18848e041f
7 changed files with 43 additions and 18 deletions

View File

@ -2,6 +2,7 @@
namespace App\Controller;
use App\View\RouteView;
use Ardent\Undercurrent\Attribute\Route;
use Ardent\Undercurrent\Http\GenericResponse;
use Ardent\Undercurrent\Http\ResponseInterface;
@ -36,15 +37,10 @@ class HelloWorldController
return new BaseView('/home', ['name' => $name]);
}
#[Route('/routes/{word}')]
public function routes(RouterConfig $config, string $word): ResponseInterface
#[Route('/routes')]
public function routes(RouterConfig $config): ViewInterface
{
$routes = implode('<br>', array_map(
fn($route) => sprintf('%s - %s->%s', $route->getRoute()->path, $route->getController(), $route->getMethod()),
$config->getRoutes()
)) . "<br>$word";
return new GenericResponse($routes);
return new RouteView($config);
}
#[Route('/world/{name}')]

View File

@ -1,10 +1,12 @@
<?php /** @var $this \Ardent\Undercurrent\View\BaseView */ ?>
<html lang="en">
<head>
<title>Base view title</title>
</head>
<body>
Base, slot: <?= $this->data['slot'] ?>
</body>
<head>
<title>Base view title</title>
</head>
<body>
<a href="<?= $this->getRoute(\App\Controller\HelloWorldController::class, 'index') ?>">Index</a><br>
Base slot: <br>
<?= $this->data['slot'] ?>
</body>
</html>

View File

@ -1,4 +1,5 @@
<?php /** @var $this \Ardent\Undercurrent\View\BaseView */ ?>
<?php $this->extends = '/base' ?>
Hello <a href="<?= $this->getRoute(\App\Controller\HelloWorldController::class, 'hello') ?>">index</a>!
Hello world<br>
<a href="<?= $this->getRoute(\App\Controller\HelloWorldController::class, 'routes') ?>">Routes</a>

12
app/Template/routes.php Normal file
View File

@ -0,0 +1,12 @@
<?php /** @var $this \App\View\RouteView */ ?>
<?php
foreach ($this->routes->getRoutes() as $route) {
echo sprintf('<a href="%s">%s</a> - %s::%s<br>',
$route->getRoute()->path,
$route->getRoute()->path,
$route->getController(),
$route->getMethod()
);
}
?>

14
app/View/RouteView.php Normal file
View File

@ -0,0 +1,14 @@
<?php
namespace App\View;
use Ardent\Undercurrent\Http\RouterConfig;
use Ardent\Undercurrent\View\BaseView;
class RouteView extends BaseView
{
public function __construct(protected readonly RouterConfig $routes)
{
parent::__construct('/routes.php', extends: '/base');
}
}