- 追加された行はこの色です。
- 削除された行はこの色です。
[[Slim4めも]]
$ php composer.phar require slim/twig-view
app/settings.php
<?php
declare(strict_types=1);
use DI\ContainerBuilder;
use Monolog\Logger;
return function (ContainerBuilder $containerBuilder) {
// Global Settings Object
$containerBuilder->addDefinitions([
'settings' => [
'displayErrorDetails' => true, // Should be set to false in production
'logger' => [
'name' => 'slim-app',
'path' => isset($_ENV['docker']) ? 'php://stdout' : __DIR__ . '/../logs/app.log',
'level' => Logger::DEBUG,
],
'twig' => [
'path' => __DIR__ . '/../src/Resource/template',
'cache' => __DIR__ . '/../var/cache/twig'
],
],
]);
};
app/dependencies.php
use Slim\Views\Twig;
use Twig\Loader\FilesystemLoader;
$containerBuilder->addDefinitions([
Twig::class => function (ContainerInterface $c) {
$settings = $c->get('settings');
$twigSettings = $settings['twig'];
$loader = new FilesystemLoader(
$twigSettings['path'],
);
$options = [
'cache' => $twigSettings['cache'],
'auto_reload' => true, // 本番環境ではfalse推奨
];
$view = new Twig(
$loader,
$options
);
return $view;
},
]);
src/Application/Actions/Action.php
use Slim\Views\Twig;
/**
* @var Twig
*/
protected $view;
/**
* @param LoggerInterface $logger
* @param Twig $view
*/
public function __construct(
LoggerInterface $logger,
Twig $twig
) {
$this->logger = $logger;
$this->view = $twig;
}
src/Application/Actions/User/UserAction.php
use Slim\Views\Twig;
/**
* @param LoggerInterface $logger
* @param Twig $view
* @param UserRepository $userRepository
*/
public function __construct(LoggerInterface $logger, Twig $view, UserRepository $userRepository)
{
parent::__construct($logger, $view);
$this->userRepository = $userRepository;
}
src/Application/Actions/User/ListUsersAction.php
<?php
declare(strict_types=1);
namespace App\Application\Actions\User;
use Psr\Http\Message\ResponseInterface as Response;
class ListUsersAction extends UserAction
{
/**
* {@inheritdoc}
*/
protected function action(): Response
{
$users = $this->userRepository->findAll();
$this->logger->info("Users list was viewed.");
return $this->view->render($this->response,
'list_users.twig',
[
'users' => $users,
]
);
}
}