Skip to content

Commit 0337261

Browse files
authored
Merge pull request #1 from brunourb/develop
Develop
2 parents bd05bd0 + 57e0fcc commit 0337261

File tree

11 files changed

+206
-0
lines changed

11 files changed

+206
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ composer.phar
55
vendor/
66
log/*
77
cache/*
8+
composer.lock
89

910
# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
1011
# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file

app/dependencies.php

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
<?php
2+
// DIC configuration
3+
4+
$container = $app->getContainer();
5+
6+
// -----------------------------------------------------------------------------
7+
// Service providers
8+
// -----------------------------------------------------------------------------
9+
10+
// Twig
11+
$container['view'] = function ($c) {
12+
$settings = $c->get('settings');
13+
$view = new Slim\Views\Twig($settings['view']['template_path'], $settings['view']['twig']);
14+
15+
// Add extensions
16+
$view->addExtension(new Slim\Views\TwigExtension($c->get('router'), $c->get('request')->getUri()));
17+
$view->addExtension(new Twig_Extension_Debug());
18+
19+
return $view;
20+
};
21+
22+
// Flash messages
23+
$container['flash'] = function ($c) {
24+
return new Slim\Flash\Messages;
25+
};
26+
27+
// -----------------------------------------------------------------------------
28+
// Service factories
29+
// -----------------------------------------------------------------------------
30+
31+
// monolog
32+
$container['logger'] = function ($c) {
33+
$settings = $c->get('settings');
34+
$logger = new Monolog\Logger($settings['logger']['name']);
35+
$logger->pushProcessor(new Monolog\Processor\UidProcessor());
36+
$logger->pushHandler(new Monolog\Handler\StreamHandler($settings['logger']['path'], Monolog\Logger::DEBUG));
37+
return $logger;
38+
};
39+
40+
// -----------------------------------------------------------------------------
41+
// Action factories
42+
// -----------------------------------------------------------------------------
43+
44+
$container[App\Action\HomeAction::class] = function ($c) {
45+
return new App\Action\HomeAction($c->get('view'), $c->get('logger'));
46+
};

app/middleware.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?php
2+
// Application middleware
3+
4+
// e.g: $app->add(new \Slim\Csrf\Guard);

app/routes.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?php
2+
// Routes
3+
4+
$app->get('/', App\Action\HomeAction::class)
5+
->setName('homepage');

app/settings.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
return [
3+
'settings' => [
4+
// Slim Settings
5+
'determineRouteBeforeAppMiddleware' => false,
6+
'displayErrorDetails' => false,
7+
8+
// View settings
9+
'view' => [
10+
'template_path' => __DIR__ . '/templates',
11+
'twig' => [
12+
'cache' => __DIR__ . '/../cache/twig',
13+
'debug' => true,
14+
'auto_reload' => true,
15+
],
16+
],
17+
18+
// monolog settings
19+
'logger' => [
20+
'name' => 'app',
21+
'path' => __DIR__ . '/../log/app.log',
22+
],
23+
],
24+
];

app/src/Action/HomeAction.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
namespace App\Action;
3+
4+
use Slim\Views\Twig;
5+
use Psr\Log\LoggerInterface;
6+
use Slim\Http\Request;
7+
use Slim\Http\Response;
8+
9+
final class HomeAction
10+
{
11+
private $view;
12+
private $logger;
13+
14+
public function __construct(Twig $view, LoggerInterface $logger)
15+
{
16+
$this->view = $view;
17+
$this->logger = $logger;
18+
}
19+
20+
public function __invoke(Request $request, Response $response, $args)
21+
{
22+
$this->logger->info("Home page action dispatched");
23+
24+
$this->view->render($response, 'home.twig');
25+
return $response;
26+
}
27+
}

app/templates/home.twig

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<html>
2+
<head>
3+
<meta charset="utf-8"/>
4+
<title>Slim 3</title>
5+
<link href='//fonts.googleapis.com/css?family=Lato:300' rel='stylesheet' type='text/css'>
6+
<link href='{{ base_url() }}/css/style.css' rel='stylesheet' type='text/css'>
7+
</head>
8+
<body>
9+
<h1>Slim</h1>
10+
<div>a microframework for PHP</div>
11+
</body>
12+
</html>
13+

composer.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"name": "brunourb/php-cms-admin",
3+
"description": "php-cms-admin - Simple Slim Framework 3 skeleton with Twig & Monolog.",
4+
"license": "BSD-3-Clause",
5+
"type": "project",
6+
"keywords": ["slim-framework", "skeleton"],
7+
"authors": [
8+
{
9+
"name": "Bruno Urbano",
10+
"email": "bruno@urbano.eti.br",
11+
"homepage": "https://urbano.eti.br"
12+
}
13+
],
14+
"autoload": {
15+
"psr-4": {
16+
"App\\": "app/src"
17+
}
18+
},
19+
"require": {
20+
"slim/slim": "^3.0",
21+
"slim/twig-view": "^2.0",
22+
"slim/flash": "^0.1.0",
23+
"monolog/monolog": "^1.13"
24+
}
25+
}

public/.htaccess

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# For production, put your rewrite rules directly into your VirtualHost
2+
# directive and turn off AllowOverride.
3+
4+
<IfModule mod_rewrite.c>
5+
RewriteEngine On
6+
7+
RewriteCond %{REQUEST_FILENAME} -s [OR]
8+
RewriteCond %{REQUEST_FILENAME} -l [OR]
9+
RewriteCond %{REQUEST_FILENAME} -d
10+
RewriteRule ^.*$ - [NC,L]
11+
12+
13+
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
14+
RewriteRule ^(.*) - [E=BASE:%1]
15+
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]
16+
</IfModule>

public/css/style.css

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
body {
2+
margin: 50px 0 0 0;
3+
padding: 0;
4+
width: 100%;
5+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
6+
text-align: center;
7+
color: #aaa;
8+
font-size: 18px;
9+
}
10+
11+
h1 {
12+
color: #719e40;
13+
letter-spacing: -3px;
14+
font-family: 'Lato', sans-serif;
15+
font-size: 100px;
16+
font-weight: 200;
17+
margin-bottom: 0;
18+
}

0 commit comments

Comments
 (0)