主题
表单
示例
权限表单
php
return Form::make(function (Form $form){
$form->row(function (Form $form){
$form->col( function (Form $form){
$form->radio('type', '菜单类型')->required()->asButton()->options(MenuType::class)
->defaultValue(1)
// 目录
->whenEqual(MenuType::Top->value(), function (Control $control){
$control->show([
'permission_name',
'icon', 'module',
'component',
'route', 'hidden',
'redirect', 'sort', 'keepalive']);
})
->whenNotEqual(MenuType::Top->value(), function (Control $control){
$control->hide(['parent_id', 'redirect']);
})
->whenEqual(MenuType::Top->value(), function (Control $control){
$control->required(['permission_name', 'module', 'route']);
})
// 菜单操作
->whenEqual(MenuType::Menu->value(), function (Control $control){
$control->show([
'permission_name', 'icon', 'module',
'component', 'route', 'hidden', 'redirect',
'sort', 'keepalive', 'select_permission_mark',
'active_menu']);
})
->whenEqual(MenuType::Menu->value(), function (Control $control){
$control->required([
'permission_name', 'module', 'route',
'select_permission_mark', 'component',
'parent_id']);
})
// 按钮操作
->whenEqual(MenuType::Action->value(), function (Control $control){
$control->show(['permission_name', 'text_permission_mark']);
})
->whenEqual(MenuType::Action->value(), function (Control $control){
$control->required(['permission_name', 'text_permission_mark', 'parent_id']);
})
->emitChange();
$form->text('permission_name', '菜单名称')->maxlength(30)->showWordLimit();
$form->select('module', '所属模块')->options((new Modules())->get())->emitChange();
$form->text('route', '路由Path')->maxlength(30)->showWordLimit();
$form->text('redirect', 'Redirect')->maxlength(50)->showWordLimit();
$form->number('sort', '排序')->min(0)->max(999999)->defaultValue(1);
})->span12();
$form->col(function (Form $form){
$form->cascader('parent_id', '上级菜单')->optionsTo('options')->options(
\Modules\Permissions\Models\Permissions::query()
->whereIn('type', [
MenuType::Menu->value,
MenuType::Top->value
])->get(['id as value', 'permission_name as label', 'parent_id'])->toTree(id: 'value')
)->checkStrictly();
$form->selectOptions('permission_mark', '权限标识')
->setName('select_permission_mark')
->api('controllers');
$form->text('permission_mark', '权限标识')->setName('text_permission_mark');
$form->iconSelect('icon', '选择icon')->class('w-full');
$form->selectOptions('component', '所属组件')->api('components');
$form->radio('hidden', 'Hidden')->options(Status::class)->defaultValue(Status::Enable->value());
$form->radio('keepalive', 'Keepalive')->options(Status::class)->defaultValue(Status::Enable->value());
})->span12();
});
$form->text('active_menu', '激活菜单')
->info('如果是访问内页的菜单路由,例如创建文章 create/post, 虽然它隶属于文章列表,但实际上并不会嵌套在文章列表路由里
而是单独的一个路由,并且是不显示在左侧菜单的。所以在访问它的时候,需要左侧菜单高亮,则需要设置该参数');
});