gpt4 book ai didi

forms - 为什么 '#weight' 属性有时在 Drupal 表单中没有任何影响?

转载 作者:行者123 更新时间:2023-12-04 00:49:11 25 4
gpt4 key购买 nike

我正在尝试为自定义类型创建节点表单。我启用了有机组和分类法,但希望它们的元素以非标准顺序出现。所以我实现了hook_form_alter并设置 #weight og_nodeapi 的属性(property)子数组到-1000,但它仍然在分类和菜单之后。我什至尝试将子数组更改为字段集(以强制它实际呈现),但没有骰子。我也试过设置

$form['taxonomy']['#weight'] = 1000 

(我有两个词汇,所以它已经被渲染为一个字段集)但这也不起作用。

我将模块的权重设置得很高,并在系统表中确认它确实是站点上最高的模块 - 所以我完全没有想法。有什么建议么?

更新:

虽然我不完全确定如何,但我确实设法让分类字段集低于其他所有内容,但现在我有一个相关问题,希望更易于理解。在分类字段集中,我有两个项目(一个标签和一个多选),我想在 hook_form_alter 中添加一些指令,如下所示:
$form['taxonomy']['instructions'] = array(
'#value' => "These are the instructions",
'#weight' => -1,
);

您猜对了,它出现在分类模块插入的术语之后。但是,如果我将其更改为字段集:
$form['taxonomy']['instructions'] = array(
'#type' => 'fieldset', // <-- here
'#title' => 'Instructions', // <-- and here for good measure
'#value' => "These are the instructions",
'#weight' => -1,
);

然后它就像我想要的那样神奇地漂浮到顶部。我还尝试了 textarea (这也有效)并明确表示标记(这没有)。

所以基本上,将类型从“标记”(默认 IIRC)更改为“字段集”具有不再忽略其权重的效果。

最佳答案

这听起来很奇怪,因为对表单元素的操作 #weight正如宣传的那样,参数对我来说总是可靠的。不过要注意的一点是,权重仅影响相对于元素兄弟的顺序,因此如果您要移动的元素低于其他元素的级别,则必须更改权重与要移动的元素处于同一级别的父元素。

澄清一下,如果你有这样的层次结构,

$element['foo'];
$element['bar'];
$element['bar']['baz']

您不能通过设置“baz”的权重来相对于“foo”移动“baz”。您必须在“bar”上设置权重(也可以移动它),或者拉出“baz”并将其置于与“foo”相同的水平。

另一个可能的原因可能是 CCK : 如果你安装了 CCK,它允许你设置它自己的顺序以及 admin/content/node-type/<yourNodeType>/fields 下的其他字段。 .它通过注册预渲染回调 content_alter_extra_weights() 来更改顺序,所以这将在您更改 hook_form_alter 之后运行.

编辑:更新以回答问题更新

标记字段类型在字段集中使用时具有特殊的行为,这在 forms api documentation 中有所暗示。 :

Note: if you use markup, if your content is not wrapped in tags (generally <p> or <div>), your content will fall outside of collapsed fieldsets.



看起来它不仅不属于折叠的字段集,而且在这些情况下也拒绝尊重权重。将标记字段的内容包装在 <p> 中标签使它尊重我机器上的重量:
$form['taxonomy']['instructions'] = array(
'#value' => "<p>These are the instructions</p>",
'#weight' => -1,
);

关于forms - 为什么 '#weight' 属性有时在 Drupal 表单中没有任何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com