更新日:2020/5/19

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

目的

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

前提

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

方法

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

app/Admin/Parts/Form/ContinueCreatingForm.php

<?php

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」を使っていますが他でも同じ

app/Admin/Controllers/UserController.php

    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のリポジトリも公開しているので参考にしてください。 ではまた次回の記事にて

© 2019 Sakihara Shinnosuke.