Laravel 管理画面パッケージ Laravel Nova を導入する
● Laravel Nova のインストール
公式サイトでライセンスを購入後ダウンロードしたいバージョンをクリックしてLaravel Novaをダウンロードします。
ダウンロードしたzipファイルを解凍して、解凍されたディレクトリを novaにリネームします。
● Laravelアプリの作成
composer create-project "laravel/laravel" my_app
● novaの導入
Laraveアプリのトップページと同階層にnovaディレクトリーをアップロードします。
composer.json の一番後ろに次のコードを追加して保存します
composer.json
"repositories": [
{
"type": "path",
"url": "./nova"
}
]
composer.json の一番後ろに次のコードを追加して保存します
続けてcomposer.json のrequireセクションに次のコードを追加して保存します
"laravel/nova": "*"
このような表記になります
composer.json
"require": {
"php": "^7.1.3",
"fideloper/proxy": "^4.0",
"laravel/framework": "5.8.*",
"laravel/tinker": "^1.0" ,
"laravel/nova": "*"
},
.envファイルにデータベースへの接続情報を書き込みます
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myapp(設定したdb名)
DB_USERNAME=myapp(設定したユーザー名)
DB_PASSWORD=123456789(設定したパスワード)
app\Providers\AppServiceProvider.php を修正します
public function boot()
{
// ↓ この行を追加
Illuminate\Support\Facades\Schema::defaultStringLength(191);
}
次のコマンドを実行します
composer update
php artisan nova:install
php artisan migrate
以上でインストールは完了です
次のファイルが自動生成されています。
/app/Nova/Resource.php
/app/Nova/User.php
/app/Providers/NovaServiceProvider.php
● Laravel Novaの起動
下記のURLにアクセスします
https://YOUR-SITE.TLD/nova
● ユーザーの作成
まだアクセスするためのユーザーがないのでユーザーを作成します。
php artisan nova:user
以上でアクセスまで完了しました!
● マイグレーションファイルの作成
/database/migrations/20190809000000createpoststable.php として以下の内容を保存します。
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePostsTable extends Migration {
public function up()
{
Schema::create('posts', function(Blueprint $table) {
$table->increments('id');
$table->string('name')->comment('タイトル');
$table->text('content_name')->nullable()->comment('本文');
$table->timestamps();
});
}
public function down()
{
Schema::drop('posts');
}
}
artisanコマンドからDBを作成します
php artisan migrate
● Novaのモデルの作成
php artisan nova:resource Post
/app/Nova/Post.php が作成されます。
以下のように書き換えます
public function fields(Request $request)
{
return [
ID::make()->sortable(),
\Laravel\Nova\Fields\Text::make('name')->sortable(),
\Laravel\Nova\Fields\Textarea::make('content_name')->sortable(),
];
}
これで Postモデル(postsテーブル)を管理画面から更新できるようになりました。 Laravel Nova便利!