Хотя первоначальная проблема, с которой я столкнулся, была в реальном проекте, где у нас довольно сложная форма, у меня есть удалось воспроизвести его по упрощенной форме образца. Я не уверен, является ли это ошибкой Filament, ошибкой Livewire или просто ошибкой пользователя. Надеюсь, вы поделитесь своими мыслями.
Я создал новый репозиторий https://github.com/mariusaustr/filamentphp-tabs-bug, куда вы можете его клонировать, следуйте инструкциям в readme.md чтобы настроить проект, просмотрите скриншоты с более неожиданным поведением и воспроизведите ошибку (?). Поскольку ошибка может быть воспроизведена в новом репозитории, я думаю, что о кеш-зависимости или устаревших зависимостях не может быть и речи.
Проблема:
Когда вы проверяете 2 live()< /code> флажки на вкладке «Подробности», элемент формы из последней вкладки отображается внизу каждой вкладки.
Когда вы снимаете флажки с этих двух флажков live() — форма последней вкладки компонент пропадает
Если вы удалите любую из этих 4 вкладок, проблема исчезнет.
Определение формы:
https://github .com/mariusaustr/filamentphp-tabs-bug/blob/main/app/Filament/Resources/UserResource.php
Код: Выделить всё
public static function form(Form $form): Form
{
$categories = [
'Category1',
'Category2',
'Category3',
];
$modelData = [];
foreach ($categories as $category) {
$modelData[$category] = [
'available' => false,
'option_1' => false,
'option_2' => false,
];
}
return $form
->schema([
Tabs::make('Tabs')
->columnSpanFull()
->tabs([
Tab::make('Control')
->schema(
collect($modelData)
->mapWithKeys(fn (array $data, string $category) => [
$category => Fieldset::make($category)
->columns(3)
->schema(
(new Collection($data))
->mapWithKeys(function ($value, $key) use ($category) {
return [
$key => Forms\Components\Checkbox::make("categories.{$category}.{$key}")
->hidden(fn (Get $get): bool => $key !== 'available' && ! $get("categories.{$category}.available"))
->default($value)
->live(condition: in_array($key, ['available', 'option_2']))
];
})
->toArray()
),
])
->toArray()
),
Tab::make('Hidden Dummy Tab 1')
->hidden(fn (Get $get): bool => (new Collection($get('categories')))
->filter(fn (array $data) => $data['available'])
->filter(fn (array $data) => $data['option_2'])
->isEmpty()
)
->schema([
Fieldset::make('Dummy fields of conditionally hidden tab')
->schema([
Forms\Components\TextInput::make('www.up'),
]),
]),
Tab::make('Empty Dummy Tab 3')
->schema([
Fieldset::make('Hidden Dummy fields')
->hidden(fn (Get $get): bool => (new Collection($get('categories')))
->filter(fn (array $data) => $data['available'])
->filter(fn (array $data) => $data['option_2'])
->isEmpty()
)
->schema([
Forms\Components\TextInput::make('abc.def'),
]),
]),
Tab::make('Dummy Tab 4')
->schema([
Fieldset::make('Dummy fieldset from last tab')
->schema([
Forms\Components\Checkbox::make('todo.check'),
]),
]),
]),
]);
}
Я что-то делаю неправильно? Или это ошибка нити накала/провода под напряжением?
Будем очень признательны за любые идеи.
Подробнее здесь: https://stackoverflow.com/questions/788 ... -misplaced