Published on

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

目的

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