Hide and show form field bases on a multi-select or checkbox list
Let's say your user has many roles. On user form you want to show a field only for certain roles (in below example the role IDs are 2 and 3). And make it empty for other roles.
Forms\Components\MultiSelect::make('roles') // orForms\Components\CheckboxList::make('roles')    ->relationship('roles', 'name')    ->reactive()    ->afterStateUpdated(function (Closure $set, Closure $get) {        if((! in_array(3, $get('roles'))) && (! in_array(2, $get('roles')))){ ) // 3 and 2 are roles IDs            $set('hospital_id', null);        }    }),Forms\Components\Select::make('hospital_id')    ->label('Hospital')    ->relationship('hospital', 'name')    ->hidden(fn (Closure $get): bool => ! (in_array(3, $get('roles')) || in_array(2, $get('roles')))) // 3 and 2 are role IDs    ->searchable(),
                
No comments yet…