Custome Form dengan WireUI
Custome Form dengan WireUI
14 Sheet
use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema;
return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('events', function (Blueprint $table) { $table->id(); $table->string('name'); $table->date('date'); $table->time('start'); $table->timestamps(); }); }
<em>/**</em> * Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('events');
}
};Replace model Event.php<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model;
class Event extends Model { use HasFactory;
protected $guarded = [];}jalankan perintah migratephp artisan migratebuat filament resource Eventphp artisan make:filament-resource Eventmembuat resource dengan panel userInstallasi dan Configurasi WireUIinstall component tailwindcss https://livewire-wireui.com/docs/get-startednpm i -D @tailwindcss/aspect-ratio @tailwindcss/forms @tailwindcss/typography tippy.jsjalankan compile mode developmentnpm run devinstall WIreUIcomposer require wireui/wireuiConfigurasi Blade pada FilamenServiceProvidermenambahkan @wireUiScriptsmembuat filamentServiceProviderphp artisan make:provider FilamentServiceProviderbuka file FilamentServiceProvider use Filament/Facades/Filament;
use Illuminate/Support/Facades/Blade;
...
public function boot():void {
Filament::registerRenderHook(
'head:start',
fn (): string => Blade::render('@wireUiScripts')
)
}daftarkan FilamentServiceProvider.php pada config/app.phpApp\Providers\FilamentServiceProvider::class,tambahkan script berikut pada <strong>tailwind.config.jsimport colors from 'tailwindcss/colors'
import forms from '@tailwindcss/forms'
import typography from '@tailwindcss/typography'
module.exports = {
...
presets: [
...
require('./vendor/wireui/wireui/tailwind.config.js')
],
theme: {
extend: {
colors: {
danger: colors.rose,
primary: colors.blue,
success: colors.green,
warning: colors.yellow,
},
},
},
content: [
...
'./vendor/wireui/wireui/resources//*.blade.php',
'./vendor/wireui/wireui/ts//.ts',
'./vendor/wireui/wireui/src/View/**/.php'
'./vendor/filament/**/*.blade.php',
],
plugins: [
forms,
typography,
],
...}kemudian pada file vite.config.js tambahkan kode berikut:import { defineConfig } from 'vite'
import laravel from 'laravel-vite-plugin'
export default defineConfig({
plugins: [
laravel({
input: [
// ...
'resources/css/filament.css',
],
// ...
}),
],
})kemudian buat file resource/css/filament.css@import '../../vendor/filament/filament/resources/css/app.css';kemudian pada FilamentServiceProvider.php tambahkan kode berikut:use Filament\Facades\Filament;
Filament::serving(function () {
// Using Vite
Filament::registerViteTheme('resources/css/filament.css');
}); atau bisa tambahkan baris ini saja pada function bootFilament::registerViteTheme('resources/css/filament.css');buat component TimePicker baruphp artisan make:form-field TimePickerakan tergenerate 2 file baru pada app/Forms/Components/TimePicker.php dan resources/view/forms/components/time-picker.blade.phpreplace kode time-picker.blade.php menjadi seperti berikutlaravel 10+<x-dynamic-component
:component="$getFieldWrapperView()"
:field="$field"
>
<x-time-picker
placeholder="12:00 AM"
wire:model.defer="{{ $getStatePath() }}"
:errorless="true"
class="!shadow-none"
>
</x-time-picker>
</x-dynamic-component>laravel 9<x-dynamic-component
:component="$getFieldWrapperView()"
:id="$getId()"
:label="$getLabel()"
:label-sr-only="$getLabelHidden()"
:helper-text="$getHelperText()"
:hint="$getHint()"
:hint-action="$getHintAction()"
:hint-color="$getHintColor()"
:hint-icon="$getHintIcon()"
:required="$isRequired()"
:state-path="$getStatePath()"
>
<x-time-picker
placeholder="12:00 AM"
wire:model.defer="{{ $getStatePath() }}"
:errorless="true"
class="!shadow-none"
>
</x-time-picker>
</x-dynamic-component>kemudian pada EventResource.php rubah pada bagian TimePicker\App\Forms\Components\TimePicker::make('start')
->required()
Komentar
Ada 0 komentar pada episode ini.