Questions tagged «forms»

将其用于有关Form API的问题。请勿将其用于实体或实体字段表单。

3
在hook_form_FORM_ID_alter中获取节点对象
跟进这个问题, 但是我没有足够的声誉在评论中要求澄清。 我正在将一个贡献模块移植到Drupal8。上述CR和发布中的摘要代码不起作用: $node = $form_state->getFormObject()->getEntity(); 什么都没有加载到$ node变量中。 我的PHPStorm IDE对getEntity()发出警告:在类Drupal \ Core \ Form \ FormInterface中未找到方法'getEntity',在主题类中未找到...。 它也没有提供此方法来完成代码。 在使用原因中,我指的是: use Drupal\Core\Entity; use Drupal\Core\Entity\EntityInterface; use Drupal\node\Entity\Node; use Drupal\Core\Render\Element;
13 8  forms 

6
如何使用hook_form_alter将字段设为只读
我试图使某些Drupal配置文件表单字段在编辑模式下为只读。我在hook_alter中使用以下代码 $form[field_organisation_company_name][und][0]['#after_build'][]='_build_element_readonly'; function _build_element_readonly($element, &$form_state) { $element['value']['#attributes']['readonly'] = 'readonly'; return $element; } 在用户界面中,字段显示为只读,但仍然可以使用firebug更改值并保存。有什么办法可以防止这种行为?
12 7  forms 

2
AJAX调用后如何重建表格
我试图允许用户使用ajax调用基于下拉框动态选择多个字段,但是之后似乎无法通过ajax调用来重建表单。 <?php class AJAXexample extends BlockBase { public function blockForm($form, FormStateInterface $form_state) { if (empty($form_state->getValue('number'))) { $form_state->setValue('number', 3); } $form['columnNum'] = [ '#title' => t('Number of Columns'), '#type' => 'select', '#options' => [ 1 => '1', 2 => '2', 3 => '3', 4 => '4', ], '#default_value' => $this->configuration['columnNum'], '#empty_option' …
12 forms  8  ajax 

8
修改现有表格
我们刚从Drupal 8开始,很快就遇到了第一个问题。 我应该如何更改Drupal 8中的现有表格? 我们需要更改节点表单的save方法以重定向到另一个页面。我们希望将节点形式更改为类似于多步形式的形式。用户创建新内容后,他们将被重定向到新表单(我们创建)以获取更多信息。 我们解决了实施中的问题hook_entity_type_alter()。 function mymodule_entity_type_alter(&$entity_info) { $handlers = $entity_info['node']->get('handlers'); $handlers['form']['default'] = 'Drupal\mymodule\Form\MyExtendedNodeForm'; $handlers['form']['edit'] = 'Drupal\mymodule\Form\MyExtendedNodeForm'; $entity_info['node']->set('handlers', $handlers); } 然后,我们创建了一个新的表单类,该类扩展了节点表单并更改了save方法。 class MyExtendedNodeForm extends NodeForm { public function save(array $form, FormStateInterface $form_state) { parent::save($form, $form_state); $node = $this->entity; $form_state->setRedirect('entity.regions.add_form', ['nid' => $node->id()]); } } 这很好用,但是很好吗?如果另一个模块执行相同的操作,我们的代码将不再执行。
12 8  forms 

5
Form API中的数字字段类型
我正在尝试使用FAPI向表单添加“数字”字段类型: $form['phone_number']['areacode'] = array( '#type' => 'textfield', '#title' => '---', '#width' => '30%', '#align' => 'center', '#required' => true, '#maxlength' => 3 ); 我将“类型”更改为“数字”,并且根本不会生成该字段。号码模块已启用。我已经实现了以下主题功能: MYTHEME_form_element MYTHEME_textfield MYTHEME_container 当我使用#type = number或时#type = number_integer,该字段后面没有显示什么? 这可能与它有关: 在自定义表单的代码中手动创建Number字段(整数和十进制) 但是我实际上希望该类型在HTML中呈现为“数字”,以便智能手机显示数字拨号器 有任何想法吗?
12 forms 

2
收到“表格已过时”错误
我有一个多步骤节点表格。如果他们之前未登录,则要求用户通过弹出对话框在表单中途登录。 在成功登录并继续处理节点表单的下一页时,出现此验证错误: 表格已经过时了。复制下面表格中所有未保存的作品,然后重新加载此页面。 我了解这是因为drupal_validation_form()验证$form['#token']并且$form_state['values']['form_token']相同。 我如何避免这种情况,因为这是一个特殊的用例(并且不是某些外部东西所伪造的)。 这方面有什么投入吗?
12 forms 

2
将节点内容加载到lightbox2中(不包含页眉,页脚和其他块)
是否可以将节点(从id)加载到灯箱2中,而不必加载所有其他块?节点必须显示的内容 我想在某些链接上显示一些弹出窗口,以允许在其中显示某些节点​​。在这种情况下,将不会进行任何提交(注释被禁用) 另一个很酷的事情是在灯箱中包含Web窗体。.再次没有标题..但我认为这更复杂,因为它是表单提交...因此需要ajax



1
水平表单元素
我已经描述了表单,但是其中的每个元素都位于上一个元素的下面。我需要描述所有元素将水平放置而不垂直放置的形式。这是我的表格: function contact_register_form($form, &$form_state) { $form['description'] = array( '#type' => 'item', '#title' => t('Sign up to be notified when your community launches:'), ); $form['email'] = array( '#type' => 'textfield', '#title' => t('Email'), ); $form['submit'] = array( '#type' => 'submit', '#value' => 'Add me', ); return $form; }
12 forms 


6
如何使用AJAX验证和提交表单?
我已经使用Form API创建了一个Webform。我正在使用#AJAXfield选项将AJAX验证添加到每个字段。 是否可以在不重新加载页面的情况下使用AJAX验证并提交表单。如果验证失败,我想显示一条错误消息,如果验证成功,那么我想显示一条消息(最好在灯箱中)并重置表单字段。 到目前为止,我的代码: $form['name'] = array( '#type' => 'textfield', '#title' => t('Name'), '#default_value' => '', '#maxlength' => '128', '#required' => TRUE, '#ajax' => array( 'callback' => '_validate_name', 'wrapper' => 'name-error-icon-container', 'method' => 'html', 'effect' => 'none', 'progress' => array( 'message' => NULL, ), ), ); $form['submit'] = array( '#type' …
12 7  forms  ajax 

7
使用表单API生成<button type =“ submit”>
我要整合一个主题很重的表格,其结构如下所示。除了提交,我大部分时间都在那儿。 &lt;form action="#"&gt; &lt;fieldset&gt; &lt;legend&gt;Authentification&lt;/legend&gt; &lt;label for="email"&gt;Courriel*&lt;/label&gt; &lt;input type="text" name="email" id="email"&gt; &lt;label for="password"&gt;Mot de passe*&lt;/label&gt; &lt;input type="password" name="password" id="password" class="last"&gt; &lt;a href="#" title="Mot de passe oublié?" class="clearfix"&gt;Forgot password?&lt;/a&gt; &lt;button type="submit" class="clearfix"&gt;&lt;span&gt;Login&lt;/span&gt;&lt;/button&gt; &lt;/fieldset&gt; &lt;/form&gt; 我尝试了许多不同的组合,结果button_type对核心没有影响。因此,我使用了此技巧,希望它能解决我的问题。,它仅更改(显然)“类型”属性,而不更改元素本身。按钮类型可以包含其他元素,在这种情况下,需要跨度来保存背景图像,因为按钮中的文本是动态的,所以它必须处于跨度中才能拉伸。 是否有人知道如何使用表单API生成以下标记行? &lt;button type="submit" class="clearfix"&gt;&lt;span&gt;Login&lt;/span&gt;&lt;/button&gt;
12 forms 

2
Webform-将值从Drupal 7提交到外部URL
我是在Drupal中创建表单的自称新手。我在Drupal 7网站上托管了一个表单(使用webform模块),并且需要将表单值提交到外部url。我已经研究了一段时间,并编写了一个自定义模块,该模块使用webform模块使用hook_form_alter和自定义提交处理程序/函数(下面粘贴的代码)在外部进行提交。 我一直在使用以下页面作为指南,但无法使该表格正常工作:https : //drupal.org/node/1357136使用drupal_http_post()提交到外部站点:我在做什么错误? 有人可以让我知道我走的路是否正确吗?任何指导都会有所帮助! &lt;?php function webform_extra_form_alter(&amp;$form, &amp;$form_state, $form_id) { //only want form with nid 1171 to submit externally //Note that "webform_client_form_1171" means modify the Webform form for the node with NID "1171". Adjust to match whichever webform node's form you're modifying if($form_id == 'webform_client_form_1171') { $form['#action'] = …
11 7  hooks  webforms  forms 

3
如何在联系人表单中实际设置textarea字段的最大长度
我需要将核心模块联系表的textarea消息限制为一定数量的字符。 这是事实 Form API不允许在textarea字段类型上设置最大长度[纯HTML却可以] 该MAXLENGTH模块,不允许你实际设置的最大长度。它从字段的最大长度中获得最大长度,该长度在每种内容类型的管理字段部分中定义 使用hook_element_info创建新的表单元素类型,仍然不能保证我可以将其添加#maxlength到textarea中。此外,如果我成功了,则需要再次更改联系表单模块,以使我的实际消息textarea字段无效。 所以我可以简单明了地更改它吗? 更改网站中所有textarea字段的最佳方法是什么?
11 forms  emails 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.