Welcome to Laravel Voyager

この記事はオールアバウトアドベントカレンダー 7日目の記事になります。

# Laravel Voyagerとは

https://the-control-group.github.io/voyager/

VoyagerはLaravelのAdmin Packageで[BREAD(CRUD)](https://ja.wikipedia.org/wiki/CRUD)操作やメニュービルダー、メディアマネージャなどの機能を持っています。

WordPressやConcrete5などのCMSの管理画面のPackageだとイメージするとわかりやすいでしょう。

# Laravelの準備
## インストール

LaravelのAdmin PackageなのでまずはLaravelをインストールしましょう。

[Laravel5.3インストール](https://readouble.com/laravel/5.3/ja/installation.html)
のCreate Projectに従って以下のコマンドでLaravelをインストールしてみました。

```
$ composer create-project --prefer-dist laravel/laravel voyager
Installing laravel/laravel (v5.3.16)
  - Installing laravel/laravel (v5.3.16)
    Downloading: 100%

Created project in voyager
> php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing vlucas/phpdotenv (v2.4.0)
    Loading from cache
 ---
 中略
 ---
> php artisan key:generate
Application key [] set successfully.
```

これでコマンドを実行したディレクトリを見るとLaravelがインストールされていることがわかります。

## Apache/ DB等の設定
ちょうど手元にApache/MySQLDBがあったのでそれを使用するようにApacheの設定等をしました。

Apache自体の設定方法はこの記事では省略します。

## envの変更
envを適宜変更します。今回はAPP_URLとDB_HOST/DATA_BASEなどを設定します。

```.env
APP_URL=http://ytakky-voyager.com

DB_CONNECTION=mysql
DB_HOST=aaa.bbb.ccc.ddd
DB_PORT=3306
DB_DATABASE=voyager
DB_USERNAME=user
DB_PASSWORD=password

```
※記事内のDBのユーザとPassはサンプル用に適当にセットしたものなので適宜変更しましょう。

## パーミッション設定
Laravel5.3ではstorageとbootstrap/cacheに書き込み権限が必要なのでパーミッションを変更しておきます。

## 接続確認
一旦これで、設定したAPP_URLに接続してみると (必要あれば/etc/hostsを変更して名前解決させると) Laravelのデフォルト画面が出てくると思います。

<img width="682" alt="スクリーンショット 2016-12-05 15.09.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/57634/1578cf83-d82f-2304-6abe-0c117d8879b6.png">

# voyagerの準備
## インストール
次にvoyagerをインストールしてみましょう。
基本的には
https://github.com/the-control-group/voyager
通りにコマンドを実行していけばよいです。

以下のコマンドを実行します。

```
composer require tcg/voyager
```

## config/app.phpのproviders追加

config/app.phpのproviders部分に以下を追加します

```
    TCG\Voyager\VoyagerServiceProvider::class,
```

## artisanコマンド実行
php artisan voyager:install
を実行します。

## パーミッション設定
voyager install後にstorage/app配下にディレクトリが作られるようなのでもう一度パーミッションを変更しておきます。

## 確認
<img width="551" alt="スクリーンショット 2016-12-05 14.43.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/57634/f50073ae-b14f-da1b-dcf3-f64535f09a69.png">

右上にLOGIN REGISTERが追加されていればvoyagerのインストールが完了です。

## Adminページへのログイン
http://[host]/admin/login
へアクセスします。

<img width="607" alt="スクリーンショット 2016-12-05 14.48.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/57634/9cb1258f-e04a-24e2-1e2d-678a45b0d0f9.png">

adminページへのログインページが表示されます。
デフォルトのemail/passwordは以下ページの最下部にあるので、それでログインします.
https://github.com/the-control-group/voyager

するとdashboardが表示されます。

<img width="1242" alt="スクリーンショット 2016-12-05 15.16.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/57634/35a5b349-426d-cac0-df1a-3687dc4e56ae.png">

## いろいろいじってみる
### 記事のpost
SEO対策のカラムがデフォルトであるので便利そう
<img width="982" alt="スクリーンショット 2016-12-05 15.31.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/57634/151bee4a-12de-8982-6af2-e288d120518f.png">
<img width="989" alt="スクリーンショット 2016-12-05 15.31.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/57634/3088a694-8cde-96cc-e800-de132984f21c.png">

### 

# ハマりどころ
## PHPのバージョン
voyagerはLaravel5.3が必要でLaravel5.3はPHP5.6.4以上が必要です。
最初5.5環境で行っていたのでインストールできずにハマっていました。
今回はPHP7環境で動作確認しています。

## Laravel5.3はカスタマイズしてはいけない。
本記事ではLaravelのインストールから行っていたのではまらないのですが、
いらないだろうと思いLaravelインストール後にdatabase/migrationsやdatabase/seedsのファイルを削除してしまうと、voyager install時の migrateでコケます。
voyagerではLaravel5.3に実装済みの2014_10_12_000000_create_users_table.php
などの実行も想定しているため消すとコケるのでむやみなLaravelのカスタマイズはやめておいたほうがいいです。

# まとめ
今回はLaravel Voyagerを試してみました。
Laravelのインストールから行えば問題ないので、20分ぐらいで環境構築が可能です。
まだ、バージョンが0.9.34なのでプロダクションで導入するのはまだ厳しそうですが
個人的なプロジェクトを作るときに管理画面側をこれを使用するのはいいと思います。