Drupal

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

2
如何在Drupal 8中默认使自定义字段集折叠
在Drupal 7中,可以选择是否使字段集可折叠,并限制此表单元素的默认状态(折叠或未折叠)。例: $form['contact_data'] = array( '#title' => t("Contact data"), '#type' => 'fieldset', '#collapsible' => TRUE, '#collapsed' => FALSE, ); 现在,在Drupal 8中我找不到属性#collapsible,#collapsed在中Drupal\Core\Render\Element\Fieldset。在Fieldset元素的官方文档中未提及任何新元素,这些新元素应替代Fieldset元素。 此外,还没有Drupal 8的Form API元素概述(例如Drupal 7)。您必须在代码中手动搜索所有Render Elements定义,这比较耗时(尤其是当您希望查看元素概述并进行比较时) 。
13 forms  8 

4
手动清除数据库存储的高速缓存时应清空哪些表?
在D8之前,要手动清除缓存,可以截断所有以开头的表cache_。 在Drupal 8中,仍然存在以开头的表cache_,但也有一个cachetags表。 cache_*如果需要手动清除缓存,D8中的建议是否仍会被截断?将cachetags表和表一起截断是否安全/必需/建议cache_*? 我知道可能会有contrib模块在做事上有所不同,我最感兴趣的是内核的功能,以及总体上Drupal 8的“最佳实践”。
13 8  caching 

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
403错误后如何将匿名用户重定向到登录表单?
如果匿名用户遇到403错误,我想将其重定向到登录表单。 我已经创建了事件订阅者,这是我的代码,但是最后在当前页面上循环了。 /** * Redirect anonymous user to login page if he encounters 404 or 403 * response. * * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $response * The created response object that will be returned. * @param string $event * The string representation of the event. * @param \Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher $event_dispatcher * Event dispatcher …
13 8  routes  redirection 

1
字段类型:文本与长文本
Drupal 7中的“文本”和“长文本”有什么区别? 如果仅是数据库字符长度,在可能输入值的域不明确的情况下,谨慎并默认使用长文本更好吗?
13 7  entities 

2
hook_preprocess_page和hook_preprocess_html有什么区别?
我看到hook_preprocess_page()和hook_preprocess_html()都是的实现hook_preprocess_HOOK(),但是我不知道何时使用它。 hook_preprocess_page 首先被调用,但这并不能真正帮助我理解谁在调用它。 查看debug_print_backtrace()输出,它被调用theme(),但这并不能真正让我明白答案。 它是由传入的数组简单定义的drupal_render()吗?
13 7  theming 

4
以编程方式更新字段,hook_node_update
当前,每次创建或更新节点时都尝试更新字段。但是,该值未在节点内填充,我是否可以使用此特定的钩子访问节点对象?我可能会缺少什么? function vbtoken_node_update($node) { entity_get_controller('node')->resetCache(array($node->nid)); $types = node_type_get_types(); //What are the current Node Content Types? $yes = ($types['volunteer_project']->type); if($node->type === $yes){ $hash = md5($node->title . $node->nid . $node->nid); $hashed = substr($hash, 0, 6); $node = node_load($node->nid); $node->tcode[$node->language][0]['value'] = $hashed; node_save($node); watchdog('vbtoken', 'Added a new Token code to %nid', array('%nid' => …
13 7  entities 


7
直接在数据库中添加新用户
我已经将这些文件提供给Drupal站点,以便可以创建一个新主题。但是,我没有得到Drupal管理员用户/密码的日期,因此我无法登录到admin区域。有没有一种方法可以直接在数据库中创建新用户或其他方法?
13 6  users  database 



3
如何从drush或PHPmyadmin禁用聚合?
我一直在搜索,发现所有与Drupal 7有关的交易。旧的drush命令drush vset preprocess_js 0对Drupal 8不起作用,DB中的“变量”表在8中不存在... 但是,由于某种原因,我无法在D8站点中禁用聚合,并希望从drush或DB中禁用聚合。 你知道吗


4
在自定义块上设置缓存上下文的正确方法是什么?
我遇到了一个问题,即对于注销用户而言,每页应该唯一的一个块不适用。问题是我在视图搜索页面上拥有一个自定义块插件,该插件包含自定义过滤器(有点像自定义替换暴露的过滤器。通过/ admin / structure / block放置的块)。 根据我对Drupal 8的了解,我将缓存上下文添加到构建数组中: public function build() { $search_form = \Drupal::formBuilder()->getForm('Drupal\mymodule\Form\SearchForm'); return [ 'search_form' => $search_form, '#cache' => ['contexts' => ['url.path', 'url.query_args']] ]; } 但是看来这一定是不正确的,因为注销后,该块将在第一个视图上缓存,并且当url更改时,它没有显示该块的新版本。 我认为可能是导致问题的视图页面,但是即使我在视图页面上关闭了缓存,问题仍然存在。 我可以通过几种方式解决此问题,例如,使用preprocess_block挂钩: function mymodule_preprocess_block__mycustomsearchblock(&$variables) { $variables['#cache']['contexts'][] = 'url.path'; $variables['#cache']['contexts'][] = 'url.query_args'; } 但这让我感到困扰,我不能只是将缓存上下文放入块的构建数组中。 由于我的代码块扩展了BlockBase,因此我决定尝试使用getCacheContexts()方法,尤其是因为我看到核心中的某些模块正在这样做。 public function getCacheContexts() { return Cache::mergeContexts(parent::getCacheContexts(), ['url.path', …
13 8  blocks  caching 

2
未在缓存的页面上触发KernelEvents :: REQUEST
我正在尝试实现KernelEvents :: REQUEST事件订阅者,以在页面加载时执行某些操作。 无论请求的页面是否存在于Drupal缓存中,我都需要触发该事件-当Drupal提供缓存中的某些内容时,似乎KernelEvents :: REQUEST不会触发。 是否可以使用某个事件来实现这一目标,还是必须以某种中间件形式实现我的要求?

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.