Since v1.8.0
Form linkage means that when a specified option of a form item is selected, other form items are displayed in linkage.
The currently supported form linkage components are:
select
multipleSelect
belongsTo
belongsToMany
radio
radioButton
radioCard
checkbox
checkboxButton
checkboxCard
The above components can be divided into two types: single-select and multi-select. Among them, select
, radio
, belongsTo
, radioButton
, radioCard
are single-select components, and others are multi-select components.
In the following example, selecting different nationality types will switch to select different linkage form items:
$form->radio('nationality','Nationality')
->options([
1 =>'Home country',
2 =>'foreign',
])->when(1, function (Form $form) {
$form->text('name','Name');
$form->text('idcard','ID card');
})->when(2, function (Form $form) {
$form->text('name','Name');
$form->text('passport','Passport');
});
In the above example, the method when(1, $callback)
is equivalent to when('=', 1, $callback)
, if you use the operator =
, you can omit this parameter
At the same time, these operators are also supported, =
, >
, >=
, <
, <=
, !=
, in
, notIn
, the usage is as follows:
$form->radio('check')
->when('>', 1, function () {
})->when('>=', 2, function () {
})->when('in', [5, 6], function () {
})->when('notIn', [7, 8], function () {
});
How to use select
, belongsTo
, radioButton
, radioCard
and other components is the same as radio
.
The multi-select component supports three operators: =
, !=
, has
,
$form->checkbox('nationality','Nationality')
->options([
1 =>'China',
2 =>'foreign',
])->when([1, 2], function (Form $form) {
$form->text('name','Name');
$form->text('idcard','ID card');
})->when('has', 2, function (Form $form) {
$form->text('name','Name');
$form->text('passport','Passport');
});
The usage of multipleSelect
, belongsToMany
, checkboxButton
, checkboxCard
and other components is the same as checkbox
.