我是否需要担心在Drupal 8中使用已弃用函数? -- 8 领域 drupal 相关 的问题

Do i need to worry about using deprecated functions in Drupal 8?


3
vote

问题

中文

我发现drupal 8一个非常陡峭的学习曲线,而且经常找到一个工作的解决方案,Phpstorm告诉我我正在使用的函数被弃用。

e.g。 这个答案显示如何列表捆绑字段,但是EntityManager被弃用,并且在Drupal 9之前将删除。

滴水9前有多长时间删除?就像下周一样,下个月,明年或在D9释放之前的几年内。

我是否需要担心使用已弃用功能?是最好的做法,避免它们在一起吗?

英文原文

I'm finding Drupal 8 a pretty steep learning curve, and quite often when I do find a solution that works PhpStorm tells me that the function I'm using is deprecated.

E.g. this answer shows how to list a bundles fields, however entityManager is deprecated and will removed before Drupal 9.

How long before Drupal 9 will this be removed? Like next week, next month, next year or in several years just before D9 is released.

Do I need to worry about using deprecated functions? Is it best practice to avoid them all together?

  

回答列表

4
 
vote

我没有参考方便,但我本周末与其中一个Drupal承办者搬运的对话。

现在,提交者不会从核心中删除标记为已弃用的任何功能。

目前,在drupal 9上没有工作。当9.0.x分支从8.x.y开始分叉时,它们将开始接受针对9.0.x的修补程序,以删除已弃用函数。

但是,有工作要删除核心弃用函数的使用量。例如, format_date() 被标记为已弃用。此功能将留下9.0.0释放,并且实际上不会从任何8.x.y版本中删除。但是,将接受针对8.x.y的补丁,以便在使用日期格式化程序服务中替换核心中的 format_date() 。并且,通常,允许在补丁中允许弃用函数的新用途(对于一致性缘故,主要是在测试中有一些小例外情况)。

你应该用它们吗?一般来说,没有。通常,已弃用的函数是来自Drupal 7的占位符,而Drupal 8正在开发出没有被替换的(例如, 998876662 ),或者向后兼容,因为Drupal 8获得了重构(例如,实体管理器服务)。几乎所有已弃用函数的文档都描述了应该做的事情。在PHPSTORM中,Command-B将带您到函数定义,并命令 - [将带您回到您的位置。

 

I don't have a reference handy, but I had the conversation about removal with one of the Drupal committers this weekend.

Right now, the committers will not remove any functions from core that are marked as deprecated.

Currently, there is no work being done on Drupal 9. When the 9.0.x branch gets forked from 8.x.y, they will start to accept patches against 9.0.x that remove deprecated functions.

However, there is work to remove usage of deprecated functions in core. For example, format_date() is marked as deprecated. This function will remain until 9.0.0 is released, and it will never actually be removed from any 8.x.y version. However, patches against 8.x.y will be accepted to replace format_date() in core with use of the date formatter service. And, in general, no new usages of deprecated functions are allowed in patches (there are some small exceptions for this for consistency sake, mainly in tests).

Should you use them? In general, no. Typically, a deprecated function was a placeholder from Drupal 7 while Drupal 8 was being developed that didn't get replaced (eg, format_date()), or left for backwards compatibility as Drupal 8 got refactored (eg, the Entity Manager service). Nearly all of the docs on deprecated functions describe what should be done instead. In PhpStorm, Command-B will take you to the function definition, and Command-[ will take you back to where you were.

 
 
       
       

相关问题

1  如何启用视图联系表单模块?  ( How do i enable the views contact form module ) 
我无法安装查看联系表模块,因为它取决于电子邮件模块,它是据说缺少,在模块页面中。电子邮件模块不是Drupal 8核心模块。 如何安装该模块? ...

11  为文本字段添加自动完成  ( Adding autocomplete for text field ) 
我试图在我的自定义模块中为drupal 8的文本字段中实现自动完成的自动完成文件 我想要的只是要获取并显示通过自动完成键入的可能标题 因此,在DefaultController.php中的类中声明了公共功能自动完成 在文件夹目录中 - > mymodule / src / controller / defaul...

0  在外部jQuery中使用{{twig变量}}  ( Using twig variables inside external jquery ) 
开发D8主题,我正在加载包含一些jQuery代码的外部.js文件(所以它不在枝形模板内)。 是否可以访问和修改外部jQuery内部 $status_definition = DataDefinition::create('list') ->setLabel(new TranslatableMarkup('Sta...

0  8 - node ::加载正在生成具有循环引用的对象,该对象崩溃kint()和var_export()  ( 8 nodeload is generating an object with circular reference which is crashing ) 
我的内容类型具有具有字段的分类学术语。当我尝试加载此类型的节点(或可能的节点)时,我会得到意外结果。使用kint()和var_export()调试时,我会收到关于"循环引用" 的错误。在Drupal 8节点结构中是正常的吗? 或在内容类型或分类中有底层错误,导致此问题? ...

0  在D8中显示通过表单构建器的HTML结果  ( Display html result via form builder in d8 ) 
我在d8中使用表单构建器构建形式,我需要与表单一起显示HTML结果。但与我们在控制器中使用HTML标记显示结果,它不显示结果。 module_name.routing.yml module_name.findAllUsers: path: '/module_name/findusersgroup' ...

-1  更改节点的日期格式[已关闭]  ( Change date format for nodes ) 
关闭。这个问题需要详细信息或清晰度。它目前不接受答案。 想要改进这个问题?添加详细信息并通过编辑此帖的问题。 关闭 4年前。 ...

2  我的代码覆盖块模板有什么问题?  ( Whats wrong with my code to overwrite a block template ) 
我想从自定义块中呈现模板。 当我启用枝条调试时检查源,我看到以下输出。 admin/config/regional/translate/translate0 我的模块结构是以下内容。 admin/config/regional/translate/translate1 我用来构建块的代码是以下。 ...

1  我想覆盖联系页面的模板  ( I want to override the template of the contact page ) 
我在drupal 8中使用bootstrap作为主题,我创建了一个子主题。我想用自定义模板覆盖联系人页面。 我在services.yml中添加了 debug: true ,但我没有找到正确的模板来在子主题中重新创建它。 ...

1  问题上传文件和包含文件名中的空格的文件  ( Problem uploading files and images containing spaces in the filename ) 
在Drupal 8中,我有字段 File 和 Image ,内容类型和表单。这些字段存储"公共" 文件夹中的文件。 当我用名字包含空格时上传文件时,例如名为 "example with spaces.pdf" 的文件,该文件被正确上传,但一旦上传,它就没有更多可用。 下面的图像是在上传包含文件名中包含空格的图像之后。...

1  联系表单:来自节点电子邮件字段的收件人  ( Contact form recipient from nodes email field ) 
用例:企业目录。 描述:我需要创建一个动态联系人表单,将每个节点的(业务列表内容类型)单个电子邮件字段作为联系表单的主收件人,或者至少作为碳副本('cc') 。 我花了2天寻找模块以及网络周围的各种编码建议,没有成功。 示例: Drupal 8中的每个节点的联系人8? 这很容易在D7中完成 视图联系表格 模块...

0  如何从数据库显示SQL查询?  ( How can i display sql query from database ) 
我正在尝试在Drupal 8.2中的页面上显示SQL查询,但我收到错误: 控制器必须返回响应(给定对象(Drupal Core Render Markup))。 如何更改以下代码? if ($result = $mysqli->query("SELECT id, discipline, teacher ...

1  电子邮件地址已被拍摄  ( The email address is already taken ) 
我正在尝试编辑用户,但我继续收到以下错误: 电子邮件地址[他们的电子邮件]已被拍摄。 我没有编辑他们的电子邮件。实际上,我可以打开编辑页面,刚刚点击保存而不改变任何东西,我仍然会收到错误。 为什么我收到此错误消息? ...

1  如何从相同内容类型中获取所有节点ID [已关闭]  ( How to get all node ids from same content type ) 
关闭。这个问题需要更多聚焦。它目前不接受答案。 想要改进这个问题?更新问题,因此它仅拍摄了一个问题,只有编辑此帖。 关闭 1年前。 ...

2  如何使用Entity_Reference字段允许呈现我的自定义实体?  ( How do i allow my custom entity to be rendered using an entity reference field ) 
使用drupal 8,我创建了一个自定义实体,为它配置了几种视图模式,然后从另一个实体添加了一个Entity_Reference字段到我的自定义实体。 在我的Entity_Reference字段的显示配置中,我选择了"渲染实体" 并为我的实体选择了有效的视图模式,但是当我查看主机实体时,我没有得到任何内容。 我还在我...

3  8 - 如何从entityReferenceItem加载术语实体?  ( 8 how do i load a term entity from an entityreferenceitem ) 
我有一个具有分类学期的内容类型。我可以使用加载第一个 EntityReferenceItem $node->country->get(0) 然后我可以 tid 做 ->target_id (然后手动通过 Term::load 手动加载术语对象。 但是有一个entityReferenceItem的功能,我可以...

2  如何将表单作为桌子呈现?  ( How do i render a form as a table ) 
默认表单布局具有在单个div标签中包装的每个表单元素,带有标签和内部输入。我想整齐地展示一些东西,并为现场标签创建一个列,以及输入区域的另一列。 我可以看到这一点以两种方式之一完成: - 我可以使用表元素或div创建一个表,并将标签与输入分开。我会用枝条吗? - 或者,也许有一个创造性的方法可以使用CSS与默认结...

0  创建自定义块[已关闭]  ( Creating custom blocks ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

1  我应该如何将字段的内容从内容类型放置到块中?  ( How should i go about placing the content of a field from a content type into a ) 
我的案子是: 我的内容类型称为"测试类型" ,具有2个字段:Body(文本区域),幻灯片(无限图像列表) 当我创建一个测试类型和它渲染的实例时,我的目标是将幻灯片字段的内容转到不同的区域,让我们说标题。首先想到是创建一个自定义块,该块将持有对字段内容的引用,但这似乎不是一个选项。这是否可以通过UI与某些设置执行,或者...

4  如何在自定义菜单项中将默认的“显示为adjoard”设置为true  ( How to set the default show as expanded to true in a custom menu item ) 
我正在自定义模块中创建一系列菜单。该网站还有自定义主题。有没有办法在主题或模块中,将菜单"显示为扩展" 到真实。这样,如果我移动我的网站,卸载,或者,它会回到框中的方式。 ...

1  仅显示匿名用户的菜单链接  ( Show menu links for anonymous users only ) 
我需要将用户注册链接显示为 998887665 菜单中的菜单项。我能够通过 links.menu.yml 添加菜单中的链接。 菜单链接显示匿名用户以及身份验证的用户,但不适用于管理员用户角色。 如何隐藏菜单项,以便与用户角色无关? ...




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


Licensed under cc by-sa 3.0 with attribution required.