Skip to content

表单

示例

权限表单

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, 虽然它隶属于文章列表,但实际上并不会嵌套在文章列表路由里
而是单独的一个路由,并且是不显示在左侧菜单的。所以在访问它的时候,需要左侧菜单高亮,则需要设置该参数');
});