Drupal

Drupal开发人员和管理员的问答

4
获取自定义用户字段的值
我有一个自定义表单,需要显示来自自定义用户字段的默认值。该字段是在/ admin / config / people / accounts / fields下创建的,其计算机名称为field_r_period_length_sec。 //get user $userCurrent = \Drupal::currentUser(); $uid = $userCurrent->id(); $r_period = $userCurrent->field_r_period_length_sec; 但是,该值未显示,并且出现此错误: 注意:未定义的属性:Dr​​upal \ Core \ Session \ AccountProxy :: $ field_r_period_length_sec 我究竟做错了什么?
13 users  8 

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
是$ node在page.tpl.php中始终可用
我周期性地收到我的一个模板文件中未定义$ node的错误。我有一个简单的if条件来检查正在显示的节点类型。我假设$ node总是可用的,还是我错了?
12 7  theming 

3
如何在节点对象上加载段落实体?
我在内容类型中使用了段落。我创建了一个段落类型并添加了内容。现在,我想将段落加载到中foreach。但是什么都没有出现。$paras是空的: $node = \Drupal\node\Entity\Node::load(1); $paras = $node->get('field_paragraph')->referencedEntities();
12 8  paragraphs 

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 

4
为匿名用户存储数据/会话
我正在一家商店里工作,对于购物车,我需要在付款之前存储物品。 $tempstore = \Drupal::service('user.private_tempstore')->get('boutique'); $tempstore->set('poids', $form_state->getValue('poids')); 我来看看以下用户服务: pivate_tempstore和shared_tempstore 但这仅对验证用户有效。 我可以用来存储数据吗?$ _SESSION吗?还是Drupal 8为此提供服务?
12 8  sessions  files 

3
如何获取段落字段值?
我想在drupal中创建产品列表,然后通过网络服务发送。为此,我为每个产品创建了一个带有段落的实体类型。如何加载段落并访问其字段?到目前为止,我只看到产品的target_id和target_revision_id。谢谢! $nodestorage = \Drupal::entityManager()->getStorage('node'); $productslist = $nodestorage->loadUnchanged(9)->toArray(); foreach($productslist['field_products'] as $prod) { debug($prod); } 结果: Array ( [target_id] => 1 [target_revision_id] => 3 )

4
如何以编程方式删除内容类型?
我在模块安装过程中以编程方式创建了内容类型(使用字段存储配置)。 我要在卸载模块时删除该内容类型。 Drupal 8有什么办法做到这一点?
12 nodes  8 

3
为什么drupal.org网站未使用较新的Drupal版本?
在我看来,如果drupal.org鼓励人们使用Drupal 8,那么他们应该以身作则,并将自己的网站迁移到Drupal 8。 在drupal.org上: <meta name="Generator" content="Drupal 7 (http://drupal.org)"> 他们发布Drupal版本8但他们自己仍在使用Drupal版本7是有原因的吗?他们还没有移民的事实是否应该给我们提供一些可疑的理由,使我们不完全了解呢?

4
寻找数据库插入示例
根据db_insert手册页,此功能已被弃用,最好使用Drupal 8数据库连接来执行插入。 不推荐使用 从Drupal 8.0.x开始,将在Drupal 9.0.0中删除。而是从容器中将数据库连接注入到服务中,然后在其上调用insert()。例如,$ injected_database-> insert($ table,$ options); 现在如何获得数据库连接和调用insert()方法?
12 database  8 

4
运行Drush返回错误
我正在Dreamhosters上运行Drush 6.2.0版和最新的Drupal 8 beta。在drush cc allsites目录中运行时,执行命令后立即收到以下错误: 致命错误:在第63行的/home/mywebsite/mywebsite.com/core/includes/bootstrap.inc中找不到类'Drupal \ Core \ Session \ AccountInterface',由于不可恢复的错误,Drush命令异常终止。 错误:在/home/mywebsite/mywebsite.com/core/includes/bootstrap.inc,第63行中找不到类'Drupal \ Core \ Session \ AccountInterface' 为什么会发生?我怎样才能解决这个问题?
12 drush  8 

1
在Drupal 8中以编程方式获取表格
该文档指出: 传递给getForm()方法的参数是定义表单的类的名称,并且是\ Drupal \ Core \ Form \ FormBuilderInterface的实现。 如何找到定义核心联系人模块提供的网站反馈表单的类的名称(表单ID为:)。feedback_contact_message_form 当我dpm()填写表格时,可以看到定义了一个类: $input array(30) →'#attributes' => array(1) →'class' => array(3) string(29) "feedback-contact-message-form" string(20) "contact-message-form" string(12) "contact-form" 我尝试了各种形式的参数作为传递给的参数: \Drupal::formBuilder()->getForm(); 但没有运气。谢谢
12 8 

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 

2
如何从多页Webform的先前步骤访问值?
我正在使用Webform4。它使用Drupal的令牌,而不是它自己的%令牌,就像在版本3中一样,而我发现的几乎所有内容都与Webform 3有关。 说我要制作多页订阅表格。在第一页上只有一个电子邮件字段。在第二篇文章中,我想要一个标记,其内容应为: molot@example.com的详细订阅配置 同样,我希望能够将它们用作将来字段的默认值,例如要求用户提供帐单地址,然后再提供送货地址。 是否有任何代币?我现在所做的是: function mymodule_token_info() { $type = array( 'name' => t('Webform submitted values'), 'description' => t('Tokens related to $_POST[\'submitted\'].'), ); $tokens = array(); if(isset($_POST['submitted'])) { foreach($_POST['submitted'] as $key => $val) { //discard $val now $tokens[$key] = array( 'name' => $key, 'description' => "\$_POST['submitted']['$key']", ); } } …
12 webforms  tokens 

1
使用Webform作为会员/用户角色的应用程序
我想在Drupal网站上实现以下功能: 匿名站点访问者(Joe)提交具有各种自定义字段的会员资格申请 管理员(简)审查会员申请 简批准乔的申请并创建新的用户帐户 Joe获得批准通知和登录信息 可能的解决方案: 甲网络表单(但如何可以从网络表单数据能够容易地转移到用户帐户?) 必须经过管理员批准的Profile2。(与此有关的问题是,我们不希望用户感觉到他们正在网站上创建帐户,而是申请会员资格。) 创建匿名用户可以填写的会员内容类型(?) 我觉得自己正在忽略一些明显的问题。 我无法将核心用户注册与其他字段一起使用,因为存在3种不同类型的成员资格。并且用户应该能够从1个成员资格更改为另一个成员身份(经批准)。
12 webforms  users 

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.