--- title: Radio --- import Aside from "@components/Aside.astro" import AutoScreenshot from "@components/AutoScreenshot.astro" import UtilityInjection from "@components/UtilityInjection.astro" ## Introduction The radio input provides a radio button group for selecting a single value from a list of predefined options: ```php use Filament\Forms\Components\Radio; Radio::make('status') ->options([ 'draft' => 'Draft', 'scheduled' => 'Scheduled', 'published' => 'Published' ]) ``` As well as allowing a static array, the `options()` method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters. ## Setting option descriptions You can optionally provide descriptions to each option using the `descriptions()` method: ```php use Filament\Forms\Components\Radio; Radio::make('status') ->options([ 'draft' => 'Draft', 'scheduled' => 'Scheduled', 'published' => 'Published' ]) ->descriptions([ 'draft' => 'Is not visible.', 'scheduled' => 'Will be visible.', 'published' => 'Is visible.' ]) ``` As well as allowing a static array, the `descriptions()` method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters. ## Positioning the options inline with each other You may wish to display the options `inline()` with each other: ```php use Filament\Forms\Components\Radio; Radio::make('feedback') ->label('Like this post?') ->boolean() ->inline() ``` Optionally, you may pass a boolean value to control if the options should be inline or not: ```php use Filament\Forms\Components\Radio; Radio::make('feedback') ->label('Like this post?') ->boolean() ->inline(FeatureFlag::active()) ``` As well as allowing a static value, the `inline()` method also accepts a function to dynamically calculate it. You can inject various utilities into the function as parameters. ## Disabling specific options You can disable specific options using the `disableOptionWhen()` method. It accepts a closure, in which you can check if the option with a specific `$value` should be disabled: ```php use Filament\Forms\Components\Radio; Radio::make('status') ->options([ 'draft' => 'Draft', 'scheduled' => 'Scheduled', 'published' => 'Published', ]) ->disableOptionWhen(fn (string $value): bool => $value === 'published') ``` You can inject various utilities into the function as parameters. If you want to retrieve the options that have not been disabled, e.g. for validation purposes, you can do so using `getEnabledOptions()`: ```php use Filament\Forms\Components\Radio; Radio::make('status') ->options([ 'draft' => 'Draft', 'scheduled' => 'Scheduled', 'published' => 'Published', ]) ->disableOptionWhen(fn (string $value): bool => $value === 'published') ->in(fn (Radio $component): array => array_keys($component->getEnabledOptions())) ``` For more information about the `in()` function, please see the [Validation documentation](validation#in). ## Boolean options If you want a simple boolean radio button group, with "Yes" and "No" options, you can use the `boolean()` method: ```php use Filament\Forms\Components\Radio; Radio::make('feedback') ->label('Like this post?') ->boolean() ``` To customize the "Yes" label, you can use the `trueLabel` argument on the `boolean()` method: ```php use Filament\Forms\Components\Radio; Radio::make('feedback') ->label('Like this post?') ->boolean(trueLabel: 'Absolutely!') ``` To customize the "No" label, you can use the `falseLabel` argument on the `boolean()` method: ```php use Filament\Forms\Components\Radio; Radio::make('feedback') ->label('Like this post?') ->boolean(falseLabel: 'Not at all!') ```