模块开发的标准方法是什么? -- 8 领域 和 importing-exporting 领域 drupal 相关 的问题

What is standard approach to module development?


1
vote

问题

中文

我正在使用模块来创建我需要的内容类型和视图。

  • 我在admin中准备内容类型,然后使用导出以导出配置(即 views.view.my_view_name.yml 等)。
  • 然后我将相关配置复制到 mymodule/config/install 目录。 我安装了模块,它添加了内容类型。

现在我必须更新内容类型的字段显示。

  • 所以我在admin和导出中更改了它。
  • 将更新的文件复制到我的模块。
现在我需要让Drupal知道我的模块已更改并"重新加载" 它。
  • 清除缓存没有帮助。
  • 呼叫 /update.php 表示"没有更新" 。
  • 唯一实际工作的东西是禁用/重新启用模块。但在该过程中,它会破坏模块中使用内容类型的所有节点(因为某个时间内容类型不可用,因此它将其降级为正常节点)。

开发模块的标准方法是什么?每次更改后删除模块似乎荒谬。

英文原文

I'm using module to create content types and views I need.

  • I prepare the content type in admin, then use export to export the configuration (i.e. views.view.my_view_name.yml, etc).
  • Then I copy relevant pieces of configuration to the mymodule/config/install directory.
  • I installed the module and it added the content type.

Now I had to update the content type's field display.

  • So I changed it in admin and exported.
  • Copied the updated file to my module.

Now I need to let Drupal know that my module is changed and to "reload" it.

  • Clearing cache did not help.
  • Calling /update.php said "nothing to update".
  • Only thing that actually worked is disable/re-enable the the module. But in that process it breaks all the nodes that used the content type in the module (because for some time the content type was unavailable and therefore it "downgraded" it to normal node).

What is a standard way to develop modules? Removing the module after every change seems ridiculous.

     
 
 

回答列表

2
 
vote

我认为这篇文章可能对你有所帮助:

https://www.mediacurrent.com/blog/registering-mirecrations- Drupal-8

在开发迁移配置时,您需要更新配置,并且很难在安装文件夹中获取更改以重新注册,因此您可以使用一些脚本,并且有一些示例博物命令。

基本上您可以使用

编辑配置
  $editable = Drupal::configFactory()->getEditable($config_name);   

,您可以用

重新安装configs
  Drupal::service('config.installer')->installDefaultConfig('module', $module_name);   

我会在installDefaultConfig函数中查看/core/lib/drupal/core/config/configinstaller.php中的代码。您可能会使用该代码的一部分来更新您需要更新的配置而不触摸应保持不变的部件。

 

I think this post may be helpful to you:

https://www.mediacurrent.com/blog/registering-migrations-drupal-8

When developing migration configs, you need to update the configs, and it's difficult to get the changes within the install folder to re-register, so there are some scripts you can use, and there are some example drush commands.

Basically you can edit the configs with

$editable = \Drupal::configFactory()->getEditable($config_name); 

And you can reinstall configs with

\Drupal::service('config.installer')->installDefaultConfig('module', $module_name); 

I'd take a look at the code in /core/lib/Drupal/Core/Config/ConfigInstaller.php in the installDefaultConfig function. You could probably use part of that code to update just the config you need to update without touching the parts that should stay the same.

 
 

相关问题

2  获取自定义内容类型的选择字段中的可用选项列表  ( Get list of available options in a select field of custom content type ) 
我创建了一种称为"幻灯片" 的自定义内容类型,该类型具有一个名为'field_category'的自定义选择字段。我希望能够将"field_category" 的可用选项加载到块形式的选择字段中。 目前正在尝试遵循答案的说明这里,但我仍然有困难。 我抓住了内容类型定义,如此 $definitions = Dru...

2  如何将变量记录到TXT文件?  ( How can i log variables to a txt file ) 
在drupal 7中,我使用devel的drupal_debug()或其别名dd()在网站的临时目录中将变量记录到drupal_debug.txt。 在Drupal 8版本的Devel此功能已消失。它似乎被 develdumpermanagerInterface 但对我来说不清楚它是如何使用的。 如何将变量记录到D...

5  没有ajax从模态内部初始化  ( No ajax gets initialised from inside the modal ) 
我有一堆在模态内部打开的形式,以便用户未被重定向页面。然后我在表单中的表单项目上有几个AJAX呼叫。它们都在页面中使用表格而不是模态时工作,但是当在模态时,它只会获得AJAX错误。 最简单的ajax功能如下: function hook_form_alter(&$form, $form_state, $form_...

1  将URL重写为路由URL  ( Rewrite url to routing url ) 
我已经创建了像这样的路由URL login.compnay_login_form: path: '/u/{company_name}/login' defaults: _controller: 'DrupalloginControllerLoginController::login_form' ...

3  如何简化注册过程  ( How may i simplify the registration process ) 
我尝试使用 rng 允许学生用户进行公司访谈的注册人(事件) 。我在我的活动中设置了一个看法,让学生注册面试。 似乎有点复杂,因为他们必须单击一个链接(寄存器)到一个页面,在那里他们在选择身份下单击创建按钮,其中只有一个强制性的"我的帐户" 收音机? 与RNG有更好的方法,或者可以使用RNG或更合适的模块来做,我确...

2  如何更新已安装的功能?  ( How do i update an installed feature ) 
如果我在不同的站点中使用Drupal 8中的模块功能,请在不同的站点中安装它们。当有更改并再次导出时,如果我替换目的地站点中的文件,我如何更新已安装的功能?我找不到UI的任何地方来做。 我不能使用毛发。 ...

-1  填写表格后的活动用户帐户  ( Active user account after fill form ) 
嗨,我所有的客户想要 不要立即激活用户帐户 在提交表单的供应商或客户端后,向管理员发送电子邮件通知他们 发送电子邮件至供应商/客户端以确认注册。 在Drupal 8 ...

3  每个语言的用户角色权限  ( User role permissions per language ) 
drupal 8支持核心中的多语言(I18n)。我想知道,是否有可能限制用户只能为一个特定语言添加/编辑内容? ...

3  如何在分类学术语页上展示儿童?  ( How to display children on the taxonomy term page ) 
我认为我的问题很简单,但我不设法在互联网上找到解决方案(我找到了Drupal 7的解决方案,但他们不适用于Drupal 8)。 我有一个分类,如: 水果 红色水果 草莓 覆盆子 黑色水果 蔬菜 在Drupal 8中使用视图,使用预配置的分​​类学期,我希望在我点击父级时,它会显示这些儿童术语中的所有子项和...

1  翻译与视图中不可翻译的字段弄乱  ( Translation mess up with fields which are not translatable used in views ) 
设置: 内容类型新闻与字段 身体(可翻译) 日期(节点旁边的另一日期字段 - 可翻译日期 - 可翻译) 新闻类型(列表字段 - 不可翻译,新闻应该是每种语言的相同类型) 用过滤器查看: 已发布:是 内容类型:新闻 内容语言:目前激活的界面语言 字段"新闻类型" - >暴露于用户 项目中的默认语言是德语...

1  在要需要的实体表单上设置字段  ( Setting a field on an entity form to be required ) 
我在内容实体上有一个多值实体参考字段,我使用延伸延伸FormBase的ContententityForm的自定义表单类来显示,该类别扩展了EntityForm。 我想设置要需要的字段:使用此表单时,必须选择至少一个实体以引用。然而,我不想使这个实体级别约束,因为在所有情况下都不是绝对需要。 在表单中,更改钩子(以及我...

1  块的动态重量  ( Dynamic weight for blocks ) 
我想改变侧边栏中的块权重,所以块位置是每个请求的更改。 有没有办法来做? ...

6  当添加或更新的某些包的节点时,如何在块上清除缓存?  ( How do you clear cache on a block when node of certain bundle added or updated ) 
如果要在更新任何节点时清除渲染数组上的缓存,则可以添加为cache_tag,"node_list" : '#cache' => [ 'tags' => ['node_list'] ], 但是当仅添加或更新某个捆绑的节点时,没有办法执行此操作。 如果您有一个块,例如,当添加或更新带有捆绑"文章...

2  d8迁移:可以在目标插件中默认捆绑包是动态的吗?  ( D8 migration can default bundle in destination plugin be dynamic ) 
我的目标是通过现有的D6内容类型('mini'),并根据其当前的D6 URL别名('课程'或"页面" )迁移到两个特定的D8内容类型中的一个,并且在其中别名落在层次结构中。 我已成功写入一个简单的源插件,它将别名添加到RowSource中。 如何控制目标插件,以便我可以迁移到相应的捆绑包中 - 无论是"页面" 或"...

0  如何覆盖视图领域?  ( How do i override the view field ) 
我想覆盖分类学术语视图视图-ceive.html.twig调整分类学术语内容列表。 我似乎无法找到正确的覆盖是什么。我的调试建议并不建议任何东西。 我已经尝试过: views-view-fields--taxonomy-term--%.html.twig views-view-fields--taxonomy-t...

0  Infinit循环当我提交表单并使用附加参数重定向到此表格  ( Infinit loop when i submit a form and redirect to this form with an additionnal ) 
我创建了一种形式。提交表单时,我希望重定向到表单页面并传递另一个参数。 我这样做: public function buildForm(array $form, FormStateInterface $form_state, $results = null) { if ($results) { cu...

0  日期时间格式:10月未正确编写德语  ( Date time formats october not correctly written in german ) 
我在drupal管理(admin / config / date-time)中创建了一个时间格式,其中包含en / de以下设置: DE: d. F Y -> 05. October 2016 EN: dS F Y -> 05th October 2016 问题是"10月" 用德语写的"Oktober" (...

1  HTML包装器未添加到视图行  ( Html wrapper not added to views row ) 
在Drupal8站点中,我有显示博客内容创建了一个枝条文件的视图,并用一些HTML标记包裹以主题博客页面。考虑一页我有10个内容。在Twig中的某些内容/行HTML包装器的特定间隔不添加,所以特定内容设计中断。我找不到这个问题的原因。请帮助解决。 注意:启用rannish缓存。 实际内容。 <div cl...

1  使用自定义模块处理缓存的正确方法是什么?  ( What is the correct way to handle caching with custom modules ) 
我在Drupal 8中创建自定义模块。我创建了一个具有一些自定义数据库表的模块。其中一个表,"mymodule_tickets" 通过我在模块中创建的管理表单填充。 在网站的公共边,我有另一个自定义页面设置('/ booking'),它显示包含可用的"票" 的表单。对于大部分,这真的很好,但我很难理解缓存。 '/ b...

5  面位搜索显示TID而不是分类名称  ( Faceted search show tid instead of taxonomy name ) 
我需要使用分类学家创建一个小平面搜索,我有作为分类学期名称的索引,但是当我去搜索时,在小平面中我看到TID而不是分类学期名称。我按照教程,但我找不到解决方案。 搜索索引 facet 搜索 有在drupal.org 谈论一个翻译xonomyprocessor回调处理器但我不...




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


Licensed under cc by-sa 3.0 with attribution required.