表单联动是指,在选择表单项的指定的选项时,联动显示其他的表单项。
目前支持的表单联动的组件有:
text
, ip
, url
, email
, mobile
, number
...date
, datetime
, time
textarea
switch
select
multipleSelect
belongsTo
belongsToMany
radio
radioButton
radioCard
checkbox
checkboxButton
checkboxCard
可以将上面的组件分为单选和多选三种类型,文本框组件、单选组件和多选组件。
text
, ip
, url
, email
, mobile
, number
, date
, datetime
, time
, textarea
等组件的change事件会触发联动
当输入框输入hello
并且失去焦点的时候将会触发联动,显示select
单选框:
$form->text('column')->when('hello', function ($form) {
$form->select('options')->options();
});
下面的例子中,选择不同的国籍类型,将会切换选择不同的联动表单项:
$form->radio('nationality', '国籍')
->options([
1 => '本国',
2 => '外国',
])->when(1, function (Form $form) {
$form->text('name', '姓名');
$form->text('idcard', '身份证');
})->when(2, function (Form $form) {
$form->text('name', '姓名');
$form->text('passport', '护照');
});
上例中,方法when(1, $callback)
等效于when('=', 1, $callback)
, 如果用操作符=
,则可以省略这个参数
同时也支持这些操作符,=
、>
、>=
、<
、<=
、!=
、in
、notIn
,使用方法如下:
$form->radio('check')
->when('>', 1, function () {
})->when('>=', 2, function () {
})->when('in', [5, 6], function () {
})->when('notIn', [7, 8], function () {
});
switch
、select
、belongsTo
、radioButton
、radioCard
等组件的使用方法和radio
是一样的。
多选组件支持三个操作符:=
、!=
、has
、
$form->checkbox('nationality', '国籍')
->options([
1 => '中国',
2 => '外国',
])->when([1, 2], function (Form $form) {
$form->text('name', '姓名');
$form->text('idcard', '身份证');
})->when('has', 2, function (Form $form) {
$form->text('name', '姓名');
$form->text('passport', '护照');
});
multipleSelect
、belongsToMany
、checkboxButton
、checkboxCard
等组件的使用方法和checkbox
是一样的。