内容类型vs webform vs form api与自定义表单vs? [关闭] -- forms 领域 和 nodes 领域 和 webforms 领域 drupal 相关 的问题

Content Type vs Webform vs Form API vs Custom Form vs? [closed]


7
vote

问题

中文
关闭。这个问题是基于意见的。它目前不接受答案。

想要改进这个问题?更新问题,以便通过编辑此帖的事实和引用来回答。

关闭 4年前

改善这个问题

我目前正在使用新的Drupal 7站点,该网站将用作数据收集和报告网站。经过多次研究/试验和错误/等等,我决定将这个问题带到了这个论坛,我真诚地希望它不会被抛出"过于通用" 。

我创建了一种内容类型,它由大约25个字段组成,我想知道让用户填充该内容的最佳方法是什么?开箱即用(甚至使用管理显示),表单本身仍然类似于我实际上想要向用户展示的表单。而且,使用其中一个Hook_Form_alter味道改变表单似乎有点疯狂,因为所涉及的代码似乎是矫枉过正的,只是为了破解形式,看起来像我打算它一样。我也花了一点时间与WebForm模块一样,这是可以的,但仍然需要完成的定制,以便具有表单外观/表现,就像我打算一样,似乎一般来说,在该模块上进行混合评论(对任何人没有冒犯!)。使用表单API ......很多和大量代码只是提出基本表格来收集数据。

我的最新方法是只需使用标记类型来创建表单本身(基本上,只需直接的HTML / CSS / JavaScript,然后填充/更新场景后面的内容类型。从开发人员的角度来看,这种方法是非常非常直接的 - 没有火箭科学 - 易于维护,但我当然喜欢那些在杜拉努尔围绕你的方式听到你的方式。我忽略了什么?

提前感谢! cmmsites

英文原文

I'm currently working on a new Drupal 7 site, which will be used as a data collection and reporting site. After much research / trial and error / etc, I've decided to bring this question to this forum, and am sincerely hoping that it won't be thrown out as being "too generic."

I've created a Content Type, which consists of roughly 25 fields, and am wondering what the best approach for having users populate that content would be? Out of the box (even using Manage Display) the form itself still resembles nothing that I'd actually want to present to the users. And, it seems a bit insane to alter the form using one of the hook_form_alter flavors, because the code involved seems way overkill just to hack the form into looking/acting like I intend it to. I've also spent a bit of time with the Webform module, which is ok, but there's still quite a bit of customizing that needs to be done in order to have the form look/act like I intend it to, and there seems to be mixed reviews on that module in general (no offense to anyone!). Same goes for using the Form API...lots and lots of code just to come up with a basic form to collect data.

My latest approach is to simply use the markup type to create the form itself (basically, just straight html / css / javascript, and then populate / update the Content Type behind the scenes. From a developer's point of view, this approach is very, very straight forward - no rocket science - easy to maintain, but I'd certainly like to hear from those of you that know your way around Drupal. Am I overlooking something?

Thanks in advance! cmmsites

        

回答列表

2
 
vote
vote
最佳答案
 

我正在使用drupal以获得完全相同的目的。基本上,我正在做的是使用字段组模块将特定项目加上div标签所以如此我可以使用CSS样式来正确布局我的表格。

drupal提供了一个非常结构化的容器元素,具有适当命名的类。因此,利用CSS对您的优势的力量应该是在操纵布局时通过主意的第一个想法。

我用webform模块搞砸了,虽然它非常有能力,但我发现只需用Drupal的标准内容类型系统收集信息即可赢得最佳。利用视图和规则模块,我能够生成报告页面,向我展示我想要的关键信息,更少模块化膨胀到我的Drupal安装。

所以肯定地阅读了视图,字段组和规则模块,以了解所描述的功能是否适合您的账单。

 

I'm using Drupal for exactly the same purpose. Basically, what I'm doing is using the Field Group module to wrap particular items together in DIV tags so that I can use CSS styles to properly layout my forms.

Drupal provides a very structured set of container elements with appropriately named classes. Accordingly, leveraging the power of CSS to your advantage should be the first thought that goes through your mind when it comes to manipulating layouts.

I mucked with the Webform module, and although it is quite capable, I've found that just sticking with Drupal's standard content type system for collecting information has suited me best. Utilizing Views and the Rules module, I'm able to generate reporting pages that show me the critical information I want with less modular bloat to my Drupal installation.

So definitely read up on Views, Field Group, and the Rules module to see if the functionality as described will fit your bill.

 
 
   
   
1
 
vote

如果要仅移动表单元素,则必须查看展示套装。

您可以根据需要放置元素,而无需写入任何代码。 您可以看到一个例子让您允许

 

If you want to move form elements only, you must take a look at Display suit.

You can put the element as you want without write nothing of code. You can see an example what DS let you do

 
 
0
 
vote

我不需要节点,我将尝试使用API​​和实体。我认为这是Drupal的未来。

是真实的,它是对法制的黑客攻击,但它很容易使用节点形式的表单API。

此外,如果您使用表单API,您将作为Drupal表示,如果不是它很难有未来开发人员的代码。

oskar

 

I you don't need nodes, I'll try with form api and entities. I think it's drupal's future.

It's true that form api it's hack to customice, but it's easy with form api that use a node-form.

Also, if you use the form api you will work as drupal say, if not it'll be hard to have a code for future developers.

Oskar

 
 
 
 
0
 
vote

我在过去几个月里广泛使用了WebForm。我正在使用WebForm模块,对于一些事情真的是一个矫枉过正,但它真的取决于你的表单是什么,它是复杂的条件领域,验证规则等。

尝试查看实体表单 drupal entityforms

和一些有趣的阅读这里 http://stidwill.com/content/web-forms-dead-live - 或者形式

 

I worked with webforms extensively over the past couple of months. I am using Webform module, for some things it's really an overkill, but it really depends what is your form, is it complicated with plenty of conditional fields, validation rules etc.

Try having a look into Entity Forms drupal entityforms

And some interesting read here http://stidwill.com/content/web-forms-dead-long-live-entity-forms

 
 
0
 
vote

我知道这个问题是旧的,但这是我的想法。您希望如何使用数据是您如何构建表单的重要决定。

webform用于调查并确实很好。很容易列出表单并启用/禁用它们,或根据需要进行更改。每个WebForm都有一个链接到其提交。

使用内容类型(节点/实体/无论)具有不同的权限涵义,稍后允许在操作中更具灵活性。您可以在内容类型上使用5星模块或标志模块,但不在WebForm提交上。

如果您想要自己处理信息并不将其存储在数据库中以进行长期检索,则使用表单API进行自定义表单很好。我不会通过定义单独的表单,验证和提交处理程序来努力做任何节点和Webform已经做的事情。但听起来你已经投入了这样做的时间。这只是为了证明,猫叫出的是一种多种方式。

webform和自定义内容类型可以使用标记字段, https://www.drupal.org / project / markup 两者都可以触发在次要自动化任务(或大型自动化的提交方面的大量规则,具体取决于您的开发人员的技能) 如果需要,这两者都具有对统计或摘要页面进行统计或摘要页面的视图集成。 ( https://www.drupal.org/project/weborm_mysql_views )

所以如果问题真的只是"用于自定义表单显示哪种方法?" 然后我会说答案是自定义内容类型。字段组,现场集合(很少需要,刺激处理,但在您需要的情况下非常有用),并且上面提到的标记字段将为您做大多数事情。当垂直选项卡中的选项卡无法使用贡献的模块时,我使用字段组和j将一组单个单选按钮转换为选项卡。有一个项目我建立了表格有80多个块的重复。我制作了这个模块,因为我只需要6个字段样式,我厌倦了在表单中使用字段名称并具有复制替换错误。 https://www.drupal.org/sandbox/developerweeks/1964036

 

I know this question is old, but here is what I think. How you want to use the data is an important determination for how you build the form.

Webform is made for surveys and does it well. It is easy to list your forms and enable/disable them, or change as needed. Each webform has a link to its submissions.

Using a content type (node/entity/whatever) has different permission implications, and allows more flexibility in actions later. You can use the 5-star module or Flag module on a content type, but not on a webform submission.

Making a custom form with the form api is good if you want to process the information yourself and not store it in the database for long term retrieval. I would not go through the trouble of defining a separate form, validation and submission handlers to just do what both node and webform already do. But it sounds like you have already invested the time in doing this. That just goes to prove there is always more than one way to skin a drupal.

Both webform and a custom content type can use the Markup field, https://www.drupal.org/project/markup Both can trigger rules to fire on submission for minor automation tasks (or large automation, depending on your developer's skill) Both have views integration for making a statistics or summary page, if desired. (https://www.drupal.org/project/webform_mysql_views)

So if the question really is only "Which method is easiest for custom form display?" then I would say the answer is the custom content type. Field groups, field collections (rarely needed, irritating to handle, but so useful when they are what you need), and the above mentioned markup field will do most things for you. I have used field groups and js to convert a set of radio buttons into tabs when tabs within vertical tabs were not possible with contributed modules. There was one project I built where the form had 80+ fields with heavy repetition. I made this module for use there because I only needed 6 field styles and I was tired of using field names in the form-alters and having copy-replace errors. https://www.drupal.org/sandbox/developerweeks/1964036

 
 

相关问题

0  控制块中的FieldSet宽度?  ( Control fieldset width in a block ) 
任何人都知道如何控制块中的drupal fieldset的宽度?我有一个自定义块,我添加了3个字段集要在每个字段中使用相同的精确字段集代码,但是在三个中,一个人的宽度很好,中间一个人溢出到中间列,然后最后一个是美好的。屏幕截图显示了顶部块和"下面的一个破坏了。我希望宽度与顶部块相同,它自动将其宽度与同一列中的其他块的...

1  日期的两位数值  ( Double digit values for date ) 
我不能弄清楚我的生活中的生活,我试图怀疑我的模块中的数字和月份使用表单API,我已经尝试了它的日期API,仍然没有运气, 我的函数看起来像这个 function set_dob_year_range($form_element) { $form_element['year']['#options'] = drup...

0  表单API - AJAX与包装器  ( Form api ajax vs wrapper ) 
我有3个下拉字段,该字段重新加载"连续" $form = array(); $form['oid'] = array( '#type' => 'select', '#title' => t('Operating System'), '#options' => taas_select_options_os_fr...

1  表单构建器模块不在Drupal 7中工作  ( Form builder module not working in drupal 7 ) 
可以有人确认是否表单构建器模块正在工作。我查看 .module ,似乎路径仍在使用Drupal 6格式。 ...

1  #ajax回调未在选择(或其他)字段上射击  ( Ajax callback not firing on select or other field ) 
我有完全相同的问题,如此: http://drupal.org/node/1335568< / A> 也就是说,要转发OPS问题,我有代码如下所示。但是,当我对选择框进行更改时,"更改" 事件不会触发。随着回调没有运行。 这个模块的作者回答了但坦率地说,他的反应对我来说没有意义。 他的回复: "这些不是我必须具体...

0  我可以从自定义模块中挂钩表单吗?  ( Can i hook a form from a custom module ) 
我的表单函数称为 mymodule_join_form 在myModule中, differentmodule_form_mymodule_join_form_alter / code> 99887661 。但是,它没有被称为(我把'回声'你好'; die;) 我可以使用 form_alter 使用 if (form...

1  如何在节点表单中使用多值,全日历日期选择器?  ( How to use multi value full calendar date picker in node form ) 
用户先前报告的车辆在Excel表中使用格式化,看起来像一个完整的月份日历。在他们使用车辆的天数上单击"日历" 标记的Visual X(通过宏)中的单元格,并在再次单击时清除了单元格。 转换为Drupal节点表单现在每天只需三次点击。 "日期使用" 字段为多值(并不总是连续日期范围),因此它们必须: 单击文本框以启动...

1  如何创建表单主题挂钩中的表单元素  ( How create form elements in form theme hook ) 
我有一个自定义模块,off,表单提交处理程序和主题挂钩 在某些情况下,我需要创建多个表单元素(例如,与"user_input_1" 等名称的文本字段 - "user_input_n" ) 我所做的是改变形式主题挂钩中的$表单数组,并呈现新元素。但这些元素在帖子中缺少并表单提交处理表单(即使在页面上显示)。我意识到在主...

4  如何在表单提交后将用户重定向到上一页?  ( How to redirect user to previous page after form submit ) 
我可以在向任何另一个页面添加节点后重定向用户,但想要将它们重定向到他们链接的上一页。现在我使用以下代码: function user_add_node_form_foto_node_form_alter(&$form, &$form_state, $form_id) { $form['actions']['s...

0  如何创建类似于管理程序块表单的表单  ( How to create forms similar to admin block forms ) 
我想创建类似于admin块设置表单的表单。 到目前为止,我已经创建了拖动表 ,如何为表格添加启用和禁用部分? 我检查了可拖动的视图模块,但它不会为我工作,因为我创建自定义表单。 ...

2  如何使用confic_form  ( How to use confirm form ) 
好吧这个是让我的坚果。我读过另一个问题,在德鲁普兰斯堡和互联网上的几个线程上发布,但我仍然无法努力。 在我的菜单挂钩中我有这个: $items['import'] = array( 'title' => '', 'type' => MENU_CALLBACK, 'page callback...

1  我如何拦截图像字段上传并验证它?  ( How i can intercept an image field upload and validate it ) 
我有一个带有图像字段的内容类型。我需要验证这个字段,因为我需要检查用户是否上传真实图像或只有具有图像扩展的文件(如jpg,gif,png等)。我试过并读过100多件事,但没有解决我的问题。 我已经尝试过"#upload_validators" 这个代码: foreach ($form['field_all_im...

25  将表单占位符添加到文本输入字段  ( Adding form placeholders to text input fields ) 
有没有办法转换常规表单并使用模块添加占位符,或者应该用表单模板或jQuery完成吗? ...

0  在页面回调中返回表格和表格  ( Return table and form in page callback ) 
我在页面回调中返回表格和形式的问题,同时它只有效,如果其中一个只返回。 function _table_maps(){ $query = db_select('maps','m'); $result = $query->fields('m') ->extend('TableSor...

0  Ajax:如何预付我的回调?  ( Ajax how to prepend my callbacks ) 
我有一个基于Drupal + Commerce模块的电子商务。 我的 add to cart 表单使用ajax在用户做出选择时重新加载自身(项目属性,如颜色,大小等); Everythings工作正常,但我需要在发送Ajax请求之前,添加隐藏表单以防止用户在请求完成之前单击其他选项(以及重新加载的表格)。 基本上,我...

0  从内容类型获取单个编辑字段  ( Get single edit field from a content type ) 
我正在用自定义形式编写一个模块。我将从存在的内容类型中添加此字段,具有值。 例如:我是一个内容类型"文章" WTH一个节点参考字段"field_ref" 。 在我的自定义表单中,我想获得这个"field_ref" 字段,具有值。 是否有可能? 我认为我可以得到整个表格,然后只得到这个领域,但我不喜欢这个解决方案:) ...

1  添加新节点但未编辑后重定向  ( Redirect after a new node is added but not edited ) 
我在节点上有一个自定义重定向。 function mymodule_form_alter(&$form, $form_state, $form_id) { $form['actions']['submit']['#submit'][] = 'custom_node_submit'; } function...

1  如何跟踪用户在我网站上的表单上的操作  ( How to track users actions on a form in my website ) 
我读了一些关于"如何跟踪......" 的帖子,但我没有找到我的答案。我不想跟踪用户loggin 或者用户点击链接多少时间,但是我想要完成的是: 跟踪我的用户(匿名或经过身份验证)以知道他们是否无法满足表单(在提交表单之前退出失败=退出) 对告诉我的每个表单有一个速度,例如:在提交之前停止登记表单的30%的用户 更...

2  ALTER USER_PASS_RESET一次性登录D7  ( Alter user pass reset for one time login d7 ) 
我不喜欢一次登录过程;将用户直接发送给用户编辑页面不是我想要的。我想强制用户插入新密码。 我创建了一个不起作用的模块;显然,我不影响提交操作,并没有将新插入的用户名带到用户对象。 // Let's try to add a form in the user pass reset form for passwor...

1  在块模式下表单验证的奇数行为  ( Odd behaviour on form validation when in block mode ) 
嗨大师和研究员, 我必须生成一个应用程序表单,需要将a为"页面" (hook_menu)和"块" 显示。 i将表单生成的同一函数(generate_form)分解。除了验证过程之外,它可以正常工作。显然,验证发生(在失败时未提交表单),但FORM_SET_ERROR()永远不会显示在块模式中(在页面模式下,工作正...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.