Slim3 Framework×slim-skeleton不使用×twigでプロジェクトを作成する（2. DocumentRoot変更～Twigを使用）

# はじめに
[Slim3 Framework×slim-skeleton不使用×twigでプロジェクトを作成する
（1. プロジェクト作成～各種設定）](https://qiita.com/erik_t/items/14d0103e343e440f6dc5)の続きです。

# 前提
下記記事で構築した環境を前提とします。

- Windows10にVagrantをを入れてCentOS7をインストールしよう([1](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4)、[2](https://qiita.com/erik_t/items/909efb63fd389f486ec3)、[3](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d)、[4](https://qiita.com/erik_t/items/8d006b599815c8fbf38b)、[5](https://qiita.com/erik_t/items/9fbe7b5630b1f62893a1)、[6](https://qiita.com/erik_t/items/11f24633f4248e4f33f0)) 
- ローカルでLAMP環境を構築しよう（[0](https://qiita.com/erik_t/items/9c7c49db061a250cbc32)、[1](https://qiita.com/erik_t/items/e36235896b327f5cb461)、[2](https://qiita.com/erik_t/items/8dc3f2a5e8e8c9376e27)、[3](https://qiita.com/erik_t/items/617503557020a4a6ba82)、[4](https://qiita.com/erik_t/items/a898d0f547bff6b3d8ff)）
- [CentOS7にComposerをインストールしよう](https://qiita.com/erik_t/items/0b3492f38f6cd8605a4c)

- 私家版 Slim Framework チュートリアル ([1](https://qiita.com/nunulk/items/4b5c15f13ade660cafbc)、[2](https://qiita.com/nunulk/items/8492548678aac697d0aa#_reference-1dc558a7a78d9b00868b)、[3](https://qiita.com/nunulk/items/33adfbba55057a7d0c5c#_reference-8903d1023c2501e00d0b)、[4](https://qiita.com/nunulk/items/fb5ef759c1337e99d878#_reference-56dbec1889beef3f7f4d)、[5](https://qiita.com/nunulk/items/92d06bada7657ce212e7#_reference-1e4198f2501e274dbdd8)、[6](https://qiita.com/nunulk/items/99c12ac8e7b631bd8ed3#_reference-11f698acaecbfe32d5ff))
[@nunulk](https://qiita.com/nunulk)さんのチュートリアルを一通り。
ここで作成したDBを使いまわします。

- Slim3 Framework×slim-skeleton不使用×twigでプロジェクトを作成する([1](https://qiita.com/erik_t/items/14d0103e343e440f6dc5)）


# 手順
~~1. 専用のユーザーを作成~~
~~2. プロジェクトディレクトリを作成・slim3インストール~~
~~3. 各種設定~~
**4. DocumentRootを変更＆表示確認**
**5. Twigを使ってみよう**
6. Loggingしてみよう
7. Controllerを作成しよう
8. PDOを使用してデータベースに接続しよう
9. @nunulkさんのチュートリアルで作成したチケット管理システムをtwigを使って再現しよう

# やってみよう
今回の記事では、手順4～5を行います。
## 4. DocumentRootを変更＆表示確認
userをrootに切り替えて行います。

設定ファイル`/etc/httpd/conf/httpd.conf`の該当部分を下記のように書き換えます。

```:/etc/httpd/conf/httpd.conf
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/home/slimuser/projects/slim/SampleApplication/public"

#
# Relax access to content within /var/www.
#
<Directory "/home/slimuser/projects/slim/SampleApplication/public">
    ##AllowOverride None
    AllowOverride All
    ##Allow open access:
    Require all granted
</Directory>
```
次に以下のコマンドでApacheを再起動します。

```
systemctl restart httpd
```

以下のコマンドでプロジェクトフォルダにパーミッション付与します。

```
chown apache:apache -R /home/slimuser/projects/SampleApplication/*
chmod 777 -R /home/slimuser/projects/SampleApplication/*
```
以下のURLを開いて、[前回の記事で行った動作確認](https://qiita.com/erik_t/items/14d0103e343e440f6dc5#%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D)と同じ動作が確認出来たらOKです。

```
http://192.168.33.90/
http://192.168.33.90/hello/world
```

## 5. Twigを使ってみよう
### Twigをインストール
以下のコマンドでtwigをインストールします。

```
composer require slim/twig-view 2.*
```
### settings.phpに設定を追加
`config/settings.php`に以下のように追記します。

```:config/settings.php
$settings['twig'] = [
  'path' => $settings['root'] . '/templates',
  'cache_enabled' => true,
  'cache_path' => $settings['temp'] . '/twig-cache'
];
```
### container.phpに設定を追加
`config/container.php`に以下のように追記します。
`use ～;`部分はこれからも増えますので、`$container = $app->getContainer();`の上にまとめて記述してください。

```:config/container.php
use Slim\Views\Twig;

$container[Twig::class] = function (Container $container) {
  $settings = $container->get('settings');
  $viewPath = $settings['twig']['path'];

  $twig = new Twig($viewPath, [
    'cache' => $settings['twig']['cache_enabled'] ? $settings['twig']['cache_path'] : false
  ]);

  $loader = $twig->getLoader();
  $loader->addPath($settings['public'], 'public');

  $router = $container->get('router');
  $uri = \Slim\Http\Uri::createFromEnvironment($container->get('environment'));
  $twig->addExtension(new \Slim\Views\TwigExtension($router, $uri));

  return $twig;
};
```
### twigファイルを作成
`templates/time.twig`を作成します。
現在時刻が表示されるだけの簡潔なものです。

```:templates/time.twig
<?DOCTYPE html>
<html>
  <head>
    <base href="{{ base_url() }}" />
  </head>
  <body>
    Current time:{{ now }}
  </body>
</html>
```
### routes.phpにルートを追加
`config/routes.php`に以下のように追記します。
`use ～;`部分はこれからも増えますので、上のほうにまとめて記述してください。

```:config/routes.php
use Slim\Http\Request;
use Slim\Http\Response;
use Slim\Views\Twig;

$app->get('/time', function (Request $request, Response $response) {
    $viewData = [
        'now' => date('Y-m-d H:i:s')
    ];

    return $this->get(Twig::class)->render($response, 'time.twig', $viewData);
});
```

### 動作確認
以下のURLを開いて`Current time:2020-07-09 05:32:24`のように現在時刻が表示されればOKです。

```
http://192.168.33.90/time
```


# 参考サイト
[Creating your first Slim 3 Framework Application](https://odan.github.io/2017/11/30/creating-your-first-slim-framework-application.html)

# 関連ページ
## Windows10にVagrantをを入れてCentOS7をインストールしよう
[1. VagrantインストールからVagrantfileを設置まで](https://qiita.com/erik_t/items/d7f7abbf7deafa4c6fe4)
[2. 仮想マシンの操作](https://qiita.com/erik_t/items/909efb63fd389f486ec3)
[3. WinSCP、Tera Termに秘密鍵でログイン ](https://qiita.com/erik_t/items/2e3c43cfe8731621b82d)
[4. WinSCP、Tera Termにrootユーザーでパスワードログイン](https://qiita.com/erik_t/items/8d006b599815c8fbf38b)
[5. zip/unzipをインストール](https://qiita.com/erik_t/items/9fbe7b5630b1f62893a1)
[6. Vagrantにて仮想環境を配布](https://qiita.com/erik_t/items/11f24633f4248e4f33f0)

## ローカルでLAMP環境を構築しよう
[0. 事前準備](https://qiita.com/erik_t/items/9c7c49db061a250cbc32)
[1. Apacheをインストール](https://qiita.com/erik_t/items/e36235896b327f5cb461)
[2. MySQLをインストール](https://qiita.com/erik_t/items/8dc3f2a5e8e8c9376e27)
[3. PHPをインストール](https://qiita.com/erik_t/items/617503557020a4a6ba82)
[4. ファイアウォールとか停止する](https://qiita.com/erik_t/items/a898d0f547bff6b3d8ff)

## Composerをインストール
[CentOS7にComposerをインストールしよう](https://qiita.com/erik_t/items/0b3492f38f6cd8605a4c)

## PHP Slim3フレームワークのサンプルアプリを作ろう
[2-1. First Application Walkthrough Getting Set Upまで](https://qiita.com/erik_t/items/9e9f6c93d2403ac90242)

## Apache
 [DocumentRootを変更しよう](https://qiita.com/erik_t/items/d8f4746d2dc2992f329e)

## Slim3 Framework×slim-skeleton不使用×twigでプロジェクトを作成する
[1. プロジェクト作成～各種設定](https://qiita.com/erik_t/items/14d0103e343e440f6dc5)
2. DocumentRoot変更～Twigを使用
[3. LoggingとController](https://qiita.com/erik_t/items/308091f436e74e2a232e)
[4.PDO使用](https://qiita.com/erik_t/items/7571f214142be628afac)
[5. チケット管理システムを再現➀](https://qiita.com/erik_t/items/fff0edee3ddfa509b2a5)
[6. チケット管理システムを再現➁](https://qiita.com/erik_t/items/28f2cabc460312ea5111)