テンプレートエンジンにTwigを採用する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[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 ...
'logger' => [
'name' => 'slim-app',
'path' => isset($_ENV['docker']) ? 'php:...
'level' => Logger::DEBUG,
],
'twig' => [
'path' => __DIR__ . '/../src/Resource/te...
'cache' => __DIR__ . '/../var/cache/twig',
'auto_reload' => true,
],
],
]);
};
app/dependencies.php
use Slim\Views\Twig;
use Twig\Loader\FilesystemLoader;
$containerBuilder->addDefinitions([
Twig::class => function (ContainerInterface $c) {
$settings = $c->get('settings')['twig'];
$loader = new FilesystemLoader(
$settings ['path'],
);
$options = [
'cache' => $settings['cache'],
'auto_reload' => $settings['auto_reload'],
];
$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,...
{
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,
]
);
}
}
終了行:
[[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 ...
'logger' => [
'name' => 'slim-app',
'path' => isset($_ENV['docker']) ? 'php:...
'level' => Logger::DEBUG,
],
'twig' => [
'path' => __DIR__ . '/../src/Resource/te...
'cache' => __DIR__ . '/../var/cache/twig',
'auto_reload' => true,
],
],
]);
};
app/dependencies.php
use Slim\Views\Twig;
use Twig\Loader\FilesystemLoader;
$containerBuilder->addDefinitions([
Twig::class => function (ContainerInterface $c) {
$settings = $c->get('settings')['twig'];
$loader = new FilesystemLoader(
$settings ['path'],
);
$options = [
'cache' => $settings['cache'],
'auto_reload' => $settings['auto_reload'],
];
$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,...
{
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,
]
);
}
}
ページ名: