Blog

laravel-admin で「作成を続行する」にデフォルトでチェックを入れる方法

laravel-admin を使っていて入力フォームにある「作成を続行する」はデフォルトでチェックが入っていたほうがいいなと思ったのでその方法を紹介します。

2021/08/16
#laravel-admin #laravel

目的

laravel-admin の管理画面の新規追加で「作成を続行する」にデフォルトでチェックを入れる

前提

laravel-admin がインストール済み
laravel-admin の公式の方法でコントロールが作成されていること

方法

laravel-admin の Form を継承して独自のフォームを作成する

namespace App\Admin\Parts\Form;

use Encore\Admin\Form;
/**
 * 「作成を続行する」にチェックをデフォルトで入れるフォーム
 *
 */
class ContinueCreatingForm extends Form
{
  public function __construct($model)
  {
    parent::__construct($model);
    $this->footer(function ($footer) {
      $footer->checkCreating(true);
    });
  }
}

フォームの読み込むを変更する Model「User」を使っていますが他でも同じ

protected function form()
{
    $form = new ContinueCreatingForm(new User());

    $form->text('name', __('Name'));
    $form->email('email', __('Email'));
    $form->datetime('email_verified_at', __('Email verified at'))->default(date('Y-m-d H:i:s'));
    $form->password('password', __('Password'));
    $form->text('remember_token', __('Remember token'));

    return $form;
}

参考 動作確認済みの環境 PHP 7.3.12 composer.json

{
  "name": "laravel/laravel",
  "type": "project",
  "description": "The Laravel Framework.",
  "keywords": ["framework", "laravel"],
  "license": "MIT",
  "require": {
    "php": "^7.2",
    "encore/laravel-admin": "^1.7",
    "fideloper/proxy": "^4.0",
    "laravel-admin-ext/ckeditor": "^1.0",
    "laravel/framework": "^6.2",
    "laravel/tinker": "^2.0",
    "laravel/ui": "^1.1"
  },
  "require-dev": {
    "facade/ignition": "^1.4",
    "friendsofphp/php-cs-fixer": "^2.16",
    "fzaninotto/faker": "^1.4",
    "mockery/mockery": "^1.0",
    "nunomaduro/collision": "^3.0",
    "phpunit/phpunit": "^8.0",
    "squizlabs/php_codesniffer": "^3.5"
  },
  "config": {
    "optimize-autoloader": true,
    "preferred-install": "dist",
    "sort-packages": true
  },
  "extra": {
    "laravel": {
      "dont-discover": []
    }
  },
  "autoload": {
    "psr-4": {
      "App\\": "app/"
    },
    "classmap": ["database/seeds", "database/factories"]
  },
  "autoload-dev": {
    "psr-4": {
      "Tests\\": "tests/"
    }
  },
  "minimum-stability": "dev",
  "prefer-stable": true,
  "scripts": {
    "post-autoload-dump": [
      "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
      "@php artisan package:discover --ansi"
    ],
    "post-root-package-install": [
      "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
    ],
    "post-create-project-cmd": ["@php artisan key:generate --ansi"]
  }
}

まとめ

デフォルトで関数が存在するので結構簡単に実装できますね。
設定が色々してある laravel-admin のリポジトリも公開しているので参考にしてください。