GVKun编程网logo

php – 如何基于TreeBuilder对象动态构建表单?(html动态树状图)

11

在这篇文章中,我们将为您详细介绍php–如何基于TreeBuilder对象动态构建表单?的内容,并且讨论关于html动态树状图的相关问题。此外,我们还会涉及一些关于asp.net-mvc–嵌套TagB

在这篇文章中,我们将为您详细介绍php – 如何基于TreeBuilder对象动态构建表单?的内容,并且讨论关于html动态树状图的相关问题。此外,我们还会涉及一些关于asp.net-mvc – 嵌套TagBuilder -as TagBuilderTree-、bsFormBuilder v1.0.0 发布,一个基于 bootstrap 的表单构建工具、com.intellij.lang.cacheBuilder.CacheBuilderRegistry的实例源码、com.intellij.ui.treeStructure.filtered.FilteringTreeBuilder的实例源码的知识,以帮助您更全面地了解这个主题。

本文目录一览:

php – 如何基于TreeBuilder对象动态构建表单?(html动态树状图)

php – 如何基于TreeBuilder对象动态构建表单?(html动态树状图)

我想为我的类定义配置模式,并使用管理员选项覆盖它们.
为了做到这一点,我需要一个表单来从管理员捕获数据.

在Symfony配置组件中,TreeBuilder类负责定义配置模式.并且如您所知,Form Component具有类似于TreeBuilder的树状结构.

如何基于TreeBuilder实例动态制作Form对象?

您的treebuilder或其中的一部分必须是可迭代的.因此,通过让它尽可能严格地表示表单,您可以使用它轻松地将配置映射到构建器.使用yml格式最简单:
form:
    name: 'exampleForm'
    path: 'target_path'
    fields:
        fieldName:
            type: 'TextType'
            attr:
                # some additional options
        otherFieldName:
            type: 'TextType'
            attr:
                # some additional options

有关详细信息,请参阅配置组件的处理部分:http://symfony.com/doc/current/components/config/definition.html#processing-configuration-values

然后可以使用表单工厂处理已处理的配置,可能如下所示:

$config = $configuration->processConfiguration($config,FormType::class,null,$config['path']);
$formBuilder = $container->get('form.factory')->createNamedBuilder($config['name');

foreach ($config['fields'] as $field) {
    $formBuilder->add($fieldName,$field['type'],$field['attr']);
}
$form = $formBuilder->createForm();

asp.net-mvc – 嵌套TagBuilder -as TagBuilderTree-

asp.net-mvc – 嵌套TagBuilder -as TagBuilderTree-

TagBuilder是构建HTML元素的一个很好的实现。但是 – 一些HTML元素可以有另一个元素(我称为子代)。我找不到Mvc类的任何类。

题;我应该实现几个支持嵌套标签的类(TagBuilderTree和TagBuilderNode)吗?我错过了什么?

解决方法

您可以在单独的TagBuilders中构建子元素,并将其生成的HTML放在父TagBuilder中。

以下是一个示例:A< select>具有一些< option>(示例为了简洁地去脂肪)

TagBuilder select = new TagBuilder("select");  

foreach (var language in languages) // never ye mind about languages
{
    TagBuilder option = new TagBuilder("option");
    option.MergeAttribute("value",language.ID.ToString());

    if (language.IsCurrent)
    {
        option.MergeAttribute("selected","selected");
    }

    option.InnerHtml = language.Description;
    // And Now,the money-code:
    select.InnerHtml += option.ToString();
}

bsFormBuilder v1.0.0 发布,一个基于 bootstrap 的表单构建工具

bsFormBuilder v1.0.0 发布,一个基于 bootstrap 的表单构建工具

bsFormBuilder v1.0.0 发布了,这是一个基于 Bootstrap v4.x + JQuery 的、拖拽的表单构建工具。

bsFormBuilder 的特点:

  • 1、基于 JQuery + Bootstrap (v4.x),简单易用
  • 2、拖动的 html 组件,支持通过 Json 自定义扩展
  • 3、组件的属性面板,支持通过 Json 自定义扩展
  • 4、支持导出 json,然后自己通过 json 来构建自己的 UI 页面
  • 5、支持导入 json 到 bsFormBuilder,用来进行二次编辑
  • 6、丰富的 API,方便二次开发和扩展
  • 7、支持 “模板” 功能,可以选择已有模板进行二次开发
  • 8、内置轻量的 html 渲染引擎,速度极快,极好用~~

bsFormBuilder

bsFormBuilder 最大的亮点,我认为是:所有的组件、属性面板都可以通过 json 自由扩展。添加一个可拖拽组件,就是在初始化的时候,添加一个 json 配置而已....

开始使用:

<div id="builder"></div>
<script>
    $(''#builder'').bsFormBuilder({...});
</script>
 

在使用前,需要导入 bootstrap 和 jquery 的相关文件。

<link href="path/bootstrap.min.css" rel="stylesheet">
<link href="path/bootstrap-icons.css" rel="stylesheet">

<script src="path/jquery.min.js"></script>
<script src="path/bootstrap.bundle.min.js"></script>

<!-- 导入 bs-form-builder 依赖-->
<link href="path/bs-form-builder.min.css" rel="stylesheet">
<script src="path/bs-form-builder.min.all.js"></script>

另外,bsFormBuilder 提供了丰富的 API ,方便二次开发和扩展,详情:https://gitee.com/fuhai/bs-form-builder

com.intellij.lang.cacheBuilder.CacheBuilderRegistry的实例源码

com.intellij.lang.cacheBuilder.CacheBuilderRegistry的实例源码

项目:intellij-ce-playground    文件:Idindex.java   
public static boolean isIndexable(FileType fileType) {
  return fileType instanceof LanguageFileType ||
         fileType instanceof CustomSyntaxTableFileType ||
         IdTableBuilding.isIdindexerRegistered(fileType) ||
         CacheBuilderRegistry.getInstance().getCacheBuilder(fileType) != null;
}
项目:tools-idea    文件:Idindex.java   
private static boolean isIndexable(FileType fileType) {
  return fileType instanceof LanguageFileType ||
         fileType instanceof CustomSyntaxTableFileType ||
         IdTableBuilding.isIdindexerRegistered(fileType) ||
         CacheBuilderRegistry.getInstance().getCacheBuilder(fileType) != null;
}
项目:consulo    文件:Idindex.java   
public static boolean isIndexable(FileType fileType) {
  return fileType instanceof LanguageFileType ||
         fileType instanceof CustomSyntaxTableFileType ||
         IdTableBuilding.isIdindexerRegistered(fileType) ||
         CacheBuilderRegistry.getInstance().getCacheBuilder(fileType) != null;
}

com.intellij.ui.treeStructure.filtered.FilteringTreeBuilder的实例源码

com.intellij.ui.treeStructure.filtered.FilteringTreeBuilder的实例源码

项目:intellij-ce-playground    文件:disposerDebugger.java   
private disposerTree(disposable parent) {
  myModificationToFilter = -1;

  final disposerStructure structure = new disposerStructure(this);
  final DefaultTreeModel model = new DefaultTreeModel(new DefaultMutableTreeNode());
  final Tree tree = new Tree(model);
  tree.setRootVisible(false);
  tree.setShowsRootHandles(true);
  tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
  myTreeBuilder = new FilteringTreeBuilder(tree,disposerTree.this,structure,AlphaComparator.INSTANCE) {
    @Override
    public boolean isAutoExpandNode(NodeDescriptor nodeDescriptor) {
      return structure.getRootElement() == getoriginalNode(nodeDescriptor);
    }
  };
  myTreeBuilder.setFilteringMerge(200,MergingUpdateQueue.ANY_COMPONENT);
  disposer.register(this,myTreeBuilder);
  myTree = tree;

  setLayout(new BorderLayout());
  add(ScrollPaneFactory.createScrollPane(myTree),BorderLayout.CENTER);

  disposer.getTree().addListener(this);

  disposer.register(parent,this);
}
项目:tools-idea    文件:disposerDebugger.java   
private disposerTree(disposable parent) {
  myModificationToFilter = -1;

  final disposerStructure structure = new disposerStructure(this);
  final DefaultTreeModel model = new DefaultTreeModel(new DefaultMutableTreeNode());
  final Tree tree = new Tree(model);
  tree.setRootVisible(false);
  tree.setShowsRootHandles(true);
  tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
  myTreeBuilder = new FilteringTreeBuilder(tree,this);
}
项目:consulo    文件:disposerDebugger.java   
private disposerTree(disposable parent) {
  myModificationToFilter = -1;

  final disposerStructure structure = new disposerStructure(this);
  final DefaultTreeModel model = new DefaultTreeModel(new DefaultMutableTreeNode());
  final Tree tree = new Tree(model);
  tree.setRootVisible(false);
  tree.setShowsRootHandles(true);
  tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
  myTreeBuilder = new FilteringTreeBuilder(tree,this);
}
项目:intellij-ce-playground    文件:FilteringTreeBuilderTest.java   
private void initBuilder() throws Exception {
  myBuilder = new FilteringTreeBuilder(myTree,myFilter,myStructure,AlphaComparator.INSTANCE) {
    @Override
    protected AbstractTreeUpdater createUpdater() {
     return _createUpdater(this);
    }
  };

  showTree();

  disposer.register(getRootdisposable(),myBuilder);
}
项目:tools-idea    文件:FilteringTreeBuilderTest.java   
private void initBuilder() throws Exception {
  myBuilder = new FilteringTreeBuilder(myTree,myBuilder);
}
项目:consulo    文件:FilteringTreeBuilderTest.java   
private void initBuilder() throws Exception {
  myBuilder = new FilteringTreeBuilder(myTree,myBuilder);
}
项目:intellij-ce-playground    文件:FacetStructureConfigurable.java   
private void revalidateTree() {
  FilteringTreeBuilder.revalidateTree(myTree);
}
项目:intellij-ce-playground    文件:FileStructureTestFixture.java   
public FilteringTreeBuilder getBuilder() {
  return getPopup().getTreeBuilder();
}
项目:intellij-ce-playground    文件:OptionsEditor.java   
private ActionCallback processSelected(final Configurable configurable,final Configurable oldConfigurable) {
  if (isShowing(configurable)) return ActionCallback.DONE;

  final ActionCallback result = new ActionCallback();

  if (configurable == null) {
    myOwnDetails.setContent(null);

    myFilter.updateSpotlight(true);
    checkModified(oldConfigurable);

    result.setDone();

  } else {
    getUiFor(configurable).doWhenDone(new EdtRunnable() {
      @Override
      public void runEdt() {
        if (mydisposed) return;

        final Configurable current = getContext().getCurrentConfigurable();
        if (current != configurable) {
          result.setRejected();
          return;
        }

        myHistory.pushQueryPlace();

        updateDetails();

        myOwnDetails.setContent(myContentWrapper);
        myOwnDetails.setBannerMinHeight(mySearchWrapper.getHeight());
        myOwnDetails.setText(getBannerText(configurable));
        if (myTreeView != null) {
          myOwnDetails.forProject(myTreeView.findConfigurableProject(configurable));
        }
        else if (Registry.is("ide.new.settings.dialog")) {
          myOwnDetails.forProject(myTree.getConfigurableProject(configurable));
        }

        final ConfigurableContent content = myConfigurable2Content.get(current);

        content.setText(getBannerText(configurable));
        content.setBannerActions(new Action[] {new ResetAction(configurable)});

        content.updateBannerActions();

        myLoadingDecorator.stopLoading();

        myFilter.updateSpotlight(false);

        checkModified(oldConfigurable);
        checkModified(configurable);

        FilteringTreeBuilder builder = myTreeView != null ? myTreeView.myBuilder : myTree.myBuilder;
        if (builder.getSelectedElements().size() == 0) {
          select(configurable).notify(result);
        } else {
          result.setDone();
        }
      }
    });
  }

  return result;
}
项目:intellij-ce-playground    文件:FileStructurePopup.java   
public FilteringTreeBuilder getTreeBuilder() {
  return myAbstractTreeBuilder;
}
项目:tools-idea    文件:FacetStructureConfigurable.java   
private void revalidateTree() {
  FilteringTreeBuilder.revalidateTree(myTree);
}
项目:tools-idea    文件:FileStructureTestBase.java   
protected FilteringTreeBuilder getBuilder() {
  return myPopup.getTreeBuilder();
}
项目:tools-idea    文件:FileStructurePopup.java   
public FilteringTreeBuilder getTreeBuilder() {
  return myAbstractTreeBuilder;
}
项目:consulo    文件:FileStructureTestBase.java   
protected FilteringTreeBuilder getBuilder() {
  return myPopup.getTreeBuilder();
}
项目:consulo    文件:FileStructurePopup.java   
public FilteringTreeBuilder getTreeBuilder() {
  return myAbstractTreeBuilder;
}

关于php – 如何基于TreeBuilder对象动态构建表单?html动态树状图的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于asp.net-mvc – 嵌套TagBuilder -as TagBuilderTree-、bsFormBuilder v1.0.0 发布,一个基于 bootstrap 的表单构建工具、com.intellij.lang.cacheBuilder.CacheBuilderRegistry的实例源码、com.intellij.ui.treeStructure.filtered.FilteringTreeBuilder的实例源码的相关信息,请在本站寻找。

本文标签: