Laravel8での行うローコード開発
※ 現在随時追加執筆中です。
Laravel-Generatorを利用した高速開発
laravel自体が、高速で開発が可能ですが、色々なライブラリを組み合わせて可能な限り 高速で開発できるようにした内容です。
参考情報
参考:laravel 参考:laravel-generator
前提条件
- asdfでphpを管理しております。
$ php -v
PHP 8.1.4 (cli) (built: Mar 19 2022 13:49:04) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.4, Copyright (c) Zend Technologies
$ composer --version
Composer version 2.2.9 2022-03-15 22:13:37
laravelをインストール
Installation Via Composer 今回はsailを使わずに行きます。
アプリ名をそのまま appname として進めます
$ composer create-project laravel/laravel:^9.0 appname $ cd appname
$ php artisan serve
Laravel v9.5.1がインストールされました。
laravel-generatorをインストール
公式サイトにありますが、Laravelのバージョンに合わせた物をインストールする必要があります。
その1
laravel 9 の場合は下記の通りです。それぞれ requireに追加してください。
"require": {
//....
"laravelcollective/html": "^6.3",
"infyomlabs/laravel-generator": "^4.0",
"infyomlabs/adminlte-templates": "^4.0",
"doctrine/dbal": "~2.3"
$ composer update
$ php artisan vendor:publish --provider="InfyOm\Generator\InfyOmGeneratorServiceProvider"
$ php artisan infyom:publish
その2
Check out this page and configure the generator based on your settings.
ジェネレーターのセッティング 現時点で、こちらに記載されてる管理画面用のテンプレートとして今回はAdmin-Lteを利用しています。
Admin-Lteのセッティング
$ php artisan ui adminlte --auth
私のnodeの環境は現時点で
node -v
v17.6.0
$ npm install && npm run dev
Additional dependencies must be installed. This will only take a moment.
Running: npm install resolve-url-loader@^5.0.0 --save-dev --legacy-peer-deps
Finished. Please run Mix again.
指示通り追加でコマンドを実行します。 $ npm install resolve-url-loader@^5.0.0 --save-dev --legacy-peer-deps
再度
$npm run dev エラーはいくつか出ましたが、一応成功したみたい。
これでサーバーから確認してみると、ログイン画面やレジスター画面が出来てて、cssなどもあたってるのを確認出来ます。
データベースの設定
自身の環境に合わせて行ってください。
初期ユーザーの投入
以下でテストの管理者を作成
name:admin email:admin@test.jp password:password
$ php artisan make:seeder UserSeeder
soffice/database/seeders/UserSeeder.php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
class UserSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
User::create([
'name' => "admin",
'email' => 'admin@test.jp',
'password' => Hash::make('password')
]);
}
}
database/seeders/DatabaseSeeder.php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Database\Seeders\UserSeeder; //追加
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
// \App\Models\User::factory(10)->create();
$this->call([
UserSeeder::class,
]);
}
}
$ php artisan migrate:fresh --seed
これで、さきほどの画面からログインできるはずです。
scaffoldしていく
コマンドでscaffoldする
$ php artisan infyom:scaffold post
guiを使う
追加
"infyomlabs/generator-builder": "^1.0"
プロバイダーに追加 config/app.php
InfyOm\GeneratorBuilder\GeneratorBuilderServiceProvider::class,
$ php artisan vendor:publish
> Provider: InfyOm\GeneratorBuilder\GeneratorBuilderServiceProvider
Copied File [/vendor/infyomlabs/generator-builder/config/generator_builder.php] To [/config/infyom/generator_builder.php]
Publishing complete.
$ php artisan infyom.publish:generator-builder
soffice/config/infyom/laravel_generator.php
これはずしておく
//'datatables' => app_path('DataTables/'),
これでGUIを作成可能に
http://localhost:8000/generator_builder
注意 GUI方式だと
Add Primaryで入れる
$table->id();
Add Timestampsで入れる
$table->timestamps();
を明示しないと抜けるので注意
作成後に migrate
$ php artisan migrate Migrating: 2022_03_19_133249_create_posts_table Migrated: 2022_03_19_133249_create_posts_table (41.83ms)
[](https://github.com/yajra/laravel-datatables)
x
composer require yajra/laravel-datatables-oracle:"~9.0"
config/app.php
```php
'providers' => [
...,
Yajra\DataTables\DataTablesServiceProvider::class,
]
'aliases' => [
...,
'DataTables' => Yajra\DataTables\Facades\DataTables::class,
]
```
> $ composer require yajra/laravel-datatables --with-all-dependencies
不足するファイルは作っておく
resources/views/layouts/datatables_css.blade.php
resources/views/layouts/datatables_js.blade.php
```
<script src="https://cdn.datatables.net/1.10.11/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.10.11/js/dataTables.bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.1/js/dataTables.buttons.min.js"></script>
<script src="https://cdn.datatables.net/buttons/1.2.1/js/buttons.colVis.min.js"></script>
```
- jqueryとか追加
resources/views/layouts/app.blade.php
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js" integrity="sha512-AIOTidJAcHBH2G/oZv9viEGXRqDNmfdPVPYOYKGy3fti0xIplnlgMHUGfuNRzC6FkzIo0iIxgFnr9RikFxK+sw==" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.css" integrity="sha512-bYPO5jmStZ9WI2602V2zaivdAnbAhtfzmxnEGh9RwtlI00I9s8ulGe4oBa5XxiC6tCITJH/QG70jswBhbLkxPw==" crossorigin="anonymous" />
- date入力はおかしくなるので formatを修正するか、無くす
resources/views/posts/fields.blade.php
@push('page_scripts')
<script type="text/javascript">
$('#published_at').datetimepicker({
//ここを削除 format: 'YYYY-MM-DD HH:mm:ss',
useCurrent: true,
sideBySide: true
})
</script>
@endpush