是否有相当于表单编辑的视图模式? -- 7 领域 和 forms 领域 和 entities 领域 drupal 相关 的问题

Is there an equivalent of view modes for form editing?


6
vote

问题

中文

我有一个包含很多字段的内容类型。最终用户需要创建此类型的内容,因此我想以简化的形式提供它们,以便他们可以在不知道大多数选项的情况下创建内容项并编辑它。然后那些想要潜入复杂性的人可以有一种先进的形式,它暴露了它们。

查看模式看起来像我想要做的那种东西,所以我使用 hook_entity_info_alter 来创建自定义视图模式,并开始尝试弄清楚如何控制<<代码> node/add/my-content-type 。挖掘到代码后,我意识到, node_view 以及添加或编辑内容项使用的视图模式使用 99887663

是否有一些"表单模式" ,它允许不同的字段类型和分组配置不同的"视图" 到表单上?

英文原文

I have a content type with a lot of fields. End users need to create content of this type, so I want to provide them with a simplified form so that they can create a content item and edit it without knowing about the majority of the options. Then those who want to dive into the complexity could have an advanced form which exposes them.

View modes looked like the kind of thing I'm trying to do, so I used hook_entity_info_alter to create a custom view mode and started trying to figure out how to control the view mode used by node/add/my-content-type. After digging into the code I've realised that view modes are used by node_view and that adding or editing a content item uses drupal_get_form instead.

Is there some "form mode" which allows different field type and grouping configuration for different "views" onto a form?

        
       
       

回答列表

4
 
vote

1 - 面板/页面管理器

如果您正在使用面板和页面管理器( chaos工具)然后通过启用/覆盖 node/add 形式> node_edit 页面管理器处理程序并创建面板布局以显示单个字段。

只设置一个变体,只能在创建特定内容类型时反应,然后按照您的意愿排列表单字段。这将允许您分开任何表单字段,并提供常规表单窗格,这些窗格将添加您错过的任何字段。

重要说明礼貌嗜睡

由于我始终将常规表格放在页面上的事实,我没有意识到,如果您没有输出所有字段,则"表单API将解释为" 用户删除这些字段的内容"并将发送回空值。这可能导致现有数据的丢失,因此请注意。


2 - 完全字段/字段Contract

您也可以尝试字段权限如果表单是基于权限的,或使用字段组具有一些折叠的字段或选项卡等,以最初隐藏字段,如果它们不是基于权限。

 

1 - Panels/Page Manager

If you're using Panels and Page Manager (part of Chaos Tools) then you can break up the node/add form by enabling/overriding the node_edit page manager handler and creating a Panels layout to show the individual fields.

Just set a variant to only react on creation of your particular content type, and then arrange the form fields as you wish. This will let you split out any form fields, as well as provide a General form pane that will add any fields that you've missed out.

IMPORTANT NOTE COURTESY OF LETHARION

Something I didn't realise due to the fact that I always put the general form on the page, is that if you DON'T output ALL fields, then "form api will interpret it as "the user deleted the content of those fields" and will send back empty values. This could result in the loss of existing data, so be careful.


2 - Solely Fields/Field contrib

You could also try Field Permissions if the form is permissions based, or use a Field group with some collapsed fieldsets or tabs etc to initially hide the fields if they are not permission based.

 
 
       
       
1
 
vote

有几个选择我认为可以为您工作....

http://drupalize.me/videos/rearrange-node-edit-form < / a>

https://drupal.org/project/msnf

https://drupal.org/project/mforms

 

There are several options I believe could work for you....

http://drupalize.me/videos/rearrange-node-edit-form

https://drupal.org/project/msnf

https://drupal.org/project/mforms

 
 
   
   
1
 
vote

柔性模块可以为您提供此功能。 http://www.drupal.org/project/fleximent

 

The flexiform module can provide this feature for you. http://www.drupal.org/project/flexiform

 
 
0
 
vote

一个部分解决方案,它对我现在足够好,但没有适当处理实体引用等事情,是"借用" 在 hook_form_alter 中的视图模式的配置。

  function MODULE_form_FORM_ID_alter(&$form, &$form_state, $form_id) {   // Since this is specific to FORM_ID, I don't need to extract the entity type   // from the form / form_state   $type = 'the_entity_type';   $view_mode = custom_logic_here();   foreach (array_keys($form) as $key) {     $instance = field_read_instance('node', $key, $type);     if (isset($instance['display']) &&         isset($instance['display'][$view_mode]) &&         $instance['display'][$view_mode]['type'] === 'hidden') {       unset($form[$key]);     } }   
 

A partial solution, which is good enough for me at present but doesn't properly deal with things like entity references, is to "borrow" a view mode's configuration in hook_form_alter.

function MODULE_form_FORM_ID_alter(&$form, &$form_state, $form_id) {   // Since this is specific to FORM_ID, I don't need to extract the entity type   // from the form / form_state   $type = 'the_entity_type';   $view_mode = custom_logic_here();   foreach (array_keys($form) as $key) {     $instance = field_read_instance('node', $key, $type);     if (isset($instance['display']) &&         isset($instance['display'][$view_mode]) &&         $instance['display'][$view_mode]['type'] === 'hidden') {       unset($form[$key]);     } } 
 
 
0
 
vote

我相信"表格模式" 被添加到D8核心后几个月。

没有直接等效于查看核心中的表格编辑模式。

一般来说,您将在D7中使用表单改变来修改表单。

 

I believe "form modes" were added to D8 core a few months back.

There is no direct equivalent to view modes for form editing in Core.

Generally, you would use form alters to modify forms in D7.

 
 
     
     
0
 
vote

您可以使用 https://www.drupal.org/project/form_mode_manager 使用核心D8中实现的表单模式>

 

You can use https://www.drupal.org/project/form_mode_manager to use form mode implemented in core D8

 
 

相关问题

-1  使用带单选按钮的选择列表  ( Using select lists with radio buttons ) 
我有一个有5个单选按钮的形式。其中两个具有用户可以选择的可选附加参数。如果选择了无线电1,则只有该无线电的可选项目将被填充。是否有一种方法使用表单API来完成此操作? 我有以下代码。选项Arex2是显示的OLLLY SELECT框。如果我将 $form['mc']['cats'] 更改为 $form['mc']['c...

2  单独的类包含文件未加载?  ( Separate classes in include file not loading ) 
我有一个特殊的问题......我正在尝试通过将一吨代码分解为类来简化我的模块,我在单独的包含文件中都有我在我的.info中注册的文件中的所有类文件与文件[]指令。 但是,当我在我的模块代码中使用这些类时,PHP DIES。这就像他们没有加载。自从我使用文件[] 以来,我以为他们应该在首次使用时支持自动加载 mod...

0  如何从Ubercart Catalog视图URL删除“Catalog”  ( How to remove catalog from ubercart catalog view url ) 
在查看产品类别时,我需要从URL中删除"目录" 。我正在使用库存uc_catalog视图。它的页面(表)显示有一个"/ _catalog" 的URL。我可以改变什么,以便单词目录将被完全排除? 例如,我希望我的类别URL是如此: mysite.com/shirts mysite.com/pants 而不是...

2  图像基于节点分类术语  ( Image based on node taxonomy terms ) 
这是我想要做的。 如果节点上有一个空映像字段,我希望它基于页面上的分类术语替换,但是密钥是我想要应用IT站点,因此不仅会影响TPL文件但是视图出色地。我猜这需要通过template.php中的mytheme_preprocess_field来完成,但我不太确定如何做到这一点。 我可以在node.tpl.php中轻松执...

1  链接到当前页面上的锚点,具有平滑滚动  ( Link to anchor on current page with smooth scroll ) 
我有流畅的滚动工作( https://drupal.org/project/scroll_to_destination_anchors )和我有链接到锚点工作( https://drupal.org/project/menu_token ),但我不能获取所需的单击菜单项的结果,然后滚动到锚点。我只需要在当前页面上工作...

1  在我的表单验证中kpr()未被调用验证并提交函数  ( Kpr in my form validation and submit function is not being called ) 
在我的表单验证和提交函数中, kpr() 未被调用。有没有更好的方法来检查我在这些功能吗?如果 kpr() 不是理想的输出我的 $form_state 数组,那么什么是理想的? ...

1  如何在Block_View主题页中获取节点ID?  ( How to get node id in a block view theme page ) 
我已将块添加到我的自定义模块中。两个页面应显示同一块。我必须展示该领域 $ node-&gt; field_tag ['und'] ['0'] ['值']; 在我的街区。 $nid = explode("/", $_GET['q']); $node = node_load($nid[1]); 我通过这个节...

0  ajax回拨函数  ( Ajax call back function ) 
我正在使用drupal 7 我正在尝试在表单中添加一个按钮并成功。现在我想在某人点击该按钮时调用一个函数 这是我的代码。 function clicktell_form_alter(&$form, &$form_state, $form_id) { //print_r($form); if(...

0  在hook_menu()中实现回调函数  ( Implementing callback function in hook menu ) 
在下面给出的链接中, https://drupal.org/node/224333 所以如下所述声明你不必声明回调路径 *这是什么意思? 我的d6中有 hook_menu(),如下: $items['ort/add/ion'] = array( 'type' => MENU_CALLBACK, ...

1  使用theme_table()和主题('',array())之间有什么区别? [复制]  ( What is the difference between using theme table and themetable array ) 
这个问题已经在这里有答案: 你为什么要使用主题(),而不是直接调用主题函数? (2个答案) ...

0  自定义函数由hook_cron()触发  ( Custom function doesnt get triggered by hook cron ) 
我已经设置了一些进给者,我将一些自定义批量链接到这些进给者。但由于某种原因,运行cron时,该功能不会触发...我想知道为什么。任何可以帮助我的人?​​ 我已链接到导入后触发的一些自定义函数: /* * Initialize hook_feeds_after_import() */ function my_...

1  如何改变UC_Address:城市表格字段?  ( How to alter the uc addresscity form field ) 
我必须在送货部分下改变Checkout Page中的城市形式字段。我必须将其从文本字段更改为"选择选项" 下拉列表。 我已经设法使用单独的模板文件进行结帐页面,但我 我无法使用 #ajax 表单字段的功能 在drupal 6中,使用 hook_form_uc_cart_checkout_form_alter() ,...

0  多次渲染导致UL更多  ( Multiple rendering causing a ul more ) 
我在template.php中有以下代码,这是 function bartik_process_page(&$variables) $main_menu_tree = menu_tree_all_data('main-menu'); $variables['main_menu_expanded'] = m...

1  在Drupal 7中刷新Ajax形式  ( Refreshing ajax forms in drupal 7 ) 
我的动态竞争表格有两个基本部分: 1-基本信息 名称 大小下拉 2- ajax字段 选项基于大小的下拉列表 当我更改大小的值时,通过带有相关值的ajax加载新的组合框。 这是我的表单的一部分: if ($competition->size == 0) { $form['coun...

1  删除当前的修订版  ( Deleting a current revision ) 
我想删除当前版本(由管理员错误),以获取节点列表。 在测试站点上 - 我在脚本中查看了重新使用核心功能,恢复到以前的修订,然后删除剩余的修订版。但恢复创造了一个新的自己。 我真的很想设置它,所以这就像最近从未发生过的修改,并且完全走了。我们的系统显示节点的历史更改,我不希望它在那里出示(也不想破解显示屏来抑制这几个...

1  自定义模块创建的节点类型不会更新  ( Node type created by custom module doesnt get updated ) 
我正在研究创建新内容类型的自定义模块。最近我向内容类型添加了一个新字段,但它没有更新。我没有此类型的任何节点,当我禁用我的模块时,删除内容类型。在我再次启用它之后,内容类型返回,但使用旧设置且没有新添加的字段。 我可能忽略了非常基本的东西,但我无法弄清楚什么。我在禁用并启用了我的模块之前和后,清除了缓存并运行Cron...

2  如何为未登录的用户禁用选项  ( How to disable option for users who arent logged in ) 
我有自定义内容类型。在主页上,我设定了内容的预告显示,我决定在那里炫耀几个字段。在每个内容旁边,我可以注意到文本"阅读更多" 。进入它后,我被重定向到完全显示内容(显示所有字段的显示)。 动作可以由每个人所述描述。但是,我想允许它只登录用户。如何为未登录的用户禁用它。 ...

1  如何在更新节点时防止节点修订更新?  ( How to prevent node revision update when node is updated ) 
我注意到,每次更新节点时,都会为此节点更新Node_revisions表中的时间戳列。我想改变"论坛" 内容类型的此行为,并在编辑论坛节点时禁用修订表的更新。我不使用影响修订的任何模块。如何实现它(可能通过我自己的自定义模块?) [编辑] 建议的重复解决方案("如何完全禁用修订功能?")是一件很大的事情。我不...

0  Drupal 7.13和服务3.5 XML有效负载模式更新节点?  ( Drupal 7 13 and services 3 5 xml payload schema to update node ) 
我终于搞定了服务,并将端点设置为节点,但无法解决如何从帖子或放置的自定义字段。 一直通过文档,例子和教程拖动,但没有似乎对XML Payload Schema的简单说明来更新节点的自定义字段(使用REST)。 以下是我通过测试客户端投入的例子(使用Chrome插件的REST控制台) url: http://exam...

0  如何将页面HTML的静态副本上传到S3  ( How to upload a static copy of a pages html to s3 ) 
我需要在编辑和发布时将URL的渲染输出的渲染输出的副本上传到Amazon S3。 我的意思是,如果我在一个站点上编辑/品牌-A /第1页,我希望该页面的完整渲染输出,由未经认真验证的用户上传到/ Brand-A / Page -1在S3桶中。本质上使用Drupal作为内容发布平台卸载到最终用户到Amazon S3。 ...




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


Licensed under cc by-sa 3.0 with attribution required.