incodiy / realments
Laravel and React form elements package for easy form creation
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
Language:JavaScript
Requires
- php: ^8.1
- laravel/framework: ^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0
This package is auto-updated.
Last update: 2025-05-18 17:40:18 UTC
README
Realments adalah package Laravel dan React yang powerful untuk membuat form input data dengan mudah melalui kode sederhana di controller Laravel.
Fitur
- Membuat elemen form dengan kode Laravel controller yang sederhana
- Mendukung berbagai tipe input (text, textarea, select, checkbox, radio, dll)
- Integrasi WYSIWYG editor untuk rich text editing
- Dukungan CSS framework dinamis (Bootstrap, Tailwind, Bulma)
- Dukungan tema gelap (dark mode) dan tema terang (light mode)
- Internasionalisasi (i18n) untuk multi-bahasa
- Validasi client-side dan server-side
- Integrasi error display dengan validasi Laravel
- Fitur add button untuk penambahan elemen dinamis
- Desain responsif untuk mobile dan desktop
Persyaratan
- PHP 8.1 atau lebih tinggi
- Laravel 10.x, 11.x, atau 12.x
- Node.js dan NPM untuk asset frontend
Instalasi
1. Instal package melalui Composer
composer require incodiy/realments
2. Publish asset package
php artisan vendor:publish --provider="Incodiy\Realments\Providers\RealmentsServiceProvider" --tag="realments-assets"
3. Publish file konfigurasi (opsional)
php artisan vendor:publish --provider="Incodiy\Realments\Providers\RealmentsServiceProvider" --tag="realments-config"
4. Publish file bahasa (opsional)
php artisan vendor:publish --provider="Incodiy\Realments\Providers\RealmentsServiceProvider" --tag="realments-lang"
5. Tambahkan Realments facade ke file config/app.php
(Laravel 10 saja)
'aliases' => [ // ... 'Realments' => Incodiy\Realments\Facades\Realments::class, ],
6. Instal dependensi NPM dan build assets
Setelah menginstal package melalui Composer, Anda perlu menginstal dependensi NPM dan build assets React:
# Pindah ke direktori project Laravel Anda cd /path/to/your/laravel/project # Instal dependensi NPM npm install --save-dev vite @vitejs/plugin-react tailwindcss postcss autoprefixer laravel-vite-plugin axios tailwindcss postcss autoprefixer # Build assets untuk production npm run build
Atau jika Anda menggunakan Yarn:
yarn install yarn build
Penggunaan Dasar
Form Open dan Close
// Di controller Anda public function create() { $form = app('realments'); // Buka form $form->open([ 'action' => route('users.store'), 'method' => 'POST', 'files' => true, // Jika Anda memerlukan upload file 'css_framework' => 'bootstrap', // Pilihan: bootstrap, tailwind, bulma 'theme_mode' => 'light' // Pilihan: light, dark ]); // Tambahkan elemen form di sini... // Tutup form dengan tombol submit $form->close('Submit'); // Render form return view('users.create', [ 'form' => $form->render() ]); }
Select Box
// Select box dasar $form->select('country', [ 'Select a country', // Opsi pertama kosong secara default 'usa' => 'United States', 'canada' => 'Canada', 'uk' => 'United Kingdom' ]); // Select box dengan nilai terpilih $form->select('country', [ 'Select a country', 'usa' => 'United States', 'canada' => 'Canada', 'uk' => 'United Kingdom' ], [ 'selected' => 'usa' ]); // Multi-select box $form->select('countries', [ 'Select countries', 'usa' => 'United States', 'canada' => 'Canada', 'uk' => 'United Kingdom' ], [ 'multiselect' => true, 'selected' => ['usa', 'uk'] ]); // Select box dengan tombol add $form->select('skills', [ 'Select a skill', 'php' => 'PHP', 'js' => 'JavaScript', 'python' => 'Python' ], [ 'add_button' => true, 'max_additions' => 5, 'button_position' => 'right', // Pilihan: right, bottom 'button_text' => 'Add Skill', 'button_class' => 'btn btn-sm btn-secondary', 'added_items' => [ ['php'], // Item pertama dengan PHP terpilih ['js'] // Item kedua dengan JavaScript terpilih ] ]);
Text Input
// Input text dasar $form->text('name', 'John Doe'); // Input text dengan atribut $form->text('name', 'John Doe', [ 'placeholder' => 'Enter your name', 'class' => 'custom-class', 'required' => true ]); // Input text dengan aturan validasi $form->text('email', 'john@example.com') ->rules('required|email');
Textarea
// Textarea dasar $form->textarea('description', 'Lorem ipsum dolor sit amet'); // Textarea dengan WYSIWYG editor $form->textarea('content', '<p>Hello World</p>', [ 'wysiwyg' => true, 'editor' => 'tinymce', // Pilihan: tinymce, ckeditor, quill 'editor_config' => [ 'height' => 300, 'plugins' => 'link image code' ] ]);
Checkbox, Radio, dan Switch
// Checkbox $form->checkbox('agree_terms', '1', true); // Radio buttons $form->radio('gender', [ 'male' => 'Male', 'female' => 'Female', 'other' => 'Other' ], 'male'); // Switch $form->switch('notifications', '1', true);
Password, Email, dan Number
// Input password $form->password('password'); // Input email $form->email('email', 'john@example.com'); // Input number $form->number('age', 25, [ 'min' => 18, 'max' => 100 ]);
Date, Time, dan DateTime
// Input date $form->date('birth_date', '1990-01-01'); // Input time $form->time('meeting_time', '14:30'); // Input DateTime $form->datetime('appointment', '2023-05-15T14:30'); // Date range $form->dateRange('vacation', ['2023-06-01', '2023-06-15']);
File Upload
// Upload file dasar $form->file('document'); // Upload file dengan thumbnail preview $form->file('profile_picture', [ 'thumbnail' => true, 'thumbnail_size' => 150, 'thumbnail_position' => 'top', // Pilihan: top, bottom 'accept' => 'image/*' ]);
Hidden Input
$form->hidden('user_id', 123);
Range, Color, Tags, dan RichText
// Range slider $form->range('rating', 5, [ 'min' => 0, 'max' => 10, 'step' => 1 ]); // Color picker $form->color('theme_color', '#3490dc'); // Tags input $form->tags('keywords', ['laravel', 'react']); // Rich text editor $form->richText('article', '<h1>Article Title</h1><p>Content goes here...</p>', [ 'editor' => 'tinymce' ]);
Captcha dan Autocomplete
// Captcha $form->captcha(); // Autocomplete $form->autocomplete('city', 'New York', [ 'New York', 'Los Angeles', 'Chicago', 'Houston', 'Phoenix' ]);
Penggunaan Lanjutan
Validasi
// Validasi server-side di controller public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|min:8|confirmed', ]); // Jika validasi gagal, error akan otomatis ditampilkan di form // Proses form... } // Validasi client-side di form builder $form->text('name') ->rules('required|max:255'); $form->email('email') ->rules('required|email'); $form->password('password') ->rules('required|min:8');
Internasionalisasi (i18n)
// Di config/realments.php 'i18n' => [ 'default_locale' => 'en', 'fallback_locale' => 'en', 'available_locales' => ['en', 'id', 'es', 'fr'], ], // Di controller $form->open([ 'locale' => 'id' // Set bahasa form ]);
Kustomisasi CSS Framework
// Di config/realments.php 'default_css_framework' => 'bootstrap', // Di controller $form->open([ 'css_framework' => 'tailwind' ]);
Theme Mode
// Di config/realments.php 'default_theme_mode' => 'light', // Di controller $form->open([ 'theme_mode' => 'dark' ]);
Kompatibilitas Laravel
Realments mendukung Laravel versi 10.x, 11.x, dan 12.x. Berikut adalah panduan kompatibilitas:
Laravel 10.x
- Tambahkan Facade ke
config/app.php
- Semua fitur didukung penuh
Laravel 11.x dan 12.x
- Tidak perlu menambahkan Facade secara manual
- Semua fitur didukung penuh
- Gunakan auto-discovery untuk service provider
Troubleshooting
Asset tidak ditemukan
Jika Anda mendapatkan error 404 untuk file JavaScript, pastikan:
- Anda telah menjalankan
npm run build
setelah instalasi - Anda telah mempublish asset dengan
php artisan vendor:publish --tag=realments-assets
- Direktori
public/vendor/incodiy/realments
ada dan berisi file JavaScript
Jika masalah berlanjut, coba:
php artisan cache:clear php artisan config:clear php artisan view:clear
Error saat build
Jika Anda mendapatkan error saat menjalankan npm run build
, pastikan:
- Anda menggunakan Node.js versi 14 atau lebih tinggi
- Semua dependensi NPM terinstal dengan benar
- Tidak ada konflik dengan package lain
Dokumentasi
Untuk dokumentasi lengkap, kunjungi GitHub Pages kami.
Testing
composer test
Kontribusi
Silakan lihat CONTRIBUTING untuk detail.
Keamanan
Jika Anda menemukan masalah keamanan, silakan kirim email ke info@incodiy.com daripada menggunakan issue tracker.
Kredit
Lisensi
The MIT License (MIT). Silakan lihat License File untuk informasi lebih lanjut.