Slim Framework: Difference between revisions
Jump to navigation
Jump to search
Line 56: | Line 56: | ||
<meta charset="utf-8"> | <meta charset="utf-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1"> | <meta name="viewport" content="width=device-width, initial-scale=1"> | ||
<title>{{ block('title') }}</title> | <title><nowiki>{{</nowiki> block('title') <nowiki>}}</nowiki></title> | ||
<link rel="stylesheet" href="/css/pure-min.css"> | <link rel="stylesheet" href="/css/pure-min.css"> | ||
</head> | </head> | ||
<body> | <body> | ||
{{ block('content') }} | <nowiki>{{</nowiki> block('content') <nowiki>}}</nowiki> | ||
</body> | </body> | ||
</html> | </html> |
Revision as of 17:39, 30 October 2021
Requirements
Slim 4 requires PHP 7.2 or greater. The current Ubuntu LTS and Debian stable include 7.4, so this requirement is satisfied on up to date servers.
Installation
Core
composer require slim/slim:"4.*" composer require slim/psr7
Additional libraries
composer require filp/whoops composer require twig/twig composer require twig/intl-extra composer require doctrine/orm composer require vlucas/phpdotenv composer require php-di/php-di --with-all-dependencies composer require phpunit/phpunit --dev
Directories
mkdir public mkdir src mkdir templates
.gitignore
vendor/
composer.json
autoloader
"autoload": { "psr-4": { "App\\": "src/" } }, "autoload-dev": { "psr-4": { "App\\Test\\": "tests/" } }
Run composer dump-autoload
to generate the autoloader.
.env
file
APP_DEFAULT_TIMEZONE="Europe/London"
templates/base.twig.html
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>{{ block('title') }}</title> <link rel="stylesheet" href="/css/pure-min.css"> </head> <body> {{ block('content') }} </body> </html>
public/index.php
<?php declare(strict_types = 1); use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use DI\ContainerBuilder; use Slim\Factory\AppFactory; require_once __DIR__ . '/../vendor/autoload.php'; $dotenv = Dotenv\Dotenv::createImmutable(__DIR__); $dotenv->load(); date_default_timezone_set($_ENV['APP_DEFAULT_TIMEZONE']); $containerBuilder = new ContainerBuilder(); AppFactory::setContainer($containerBuilder->build()); $app = AppFactory::create(); $app->addRoutingMiddleware(); $app->addBodyParsingMiddleware(); $app->addErrorMiddleware(true, true, true); $app->get('/hello/[{name}]', function( ServerRequestInterface $request, ResponseInterface $response, array $args ): ResponseInterface { $name = $args['name'] ?? 'unknown'; $response->getBody()->write("hello $name"); return $response; }); $app->run();
Slim Skeleton
composer create-project slim/slim-skeleton my-app