在drupal以编程方式创建实体 -- 7 领域 和 entities 领域 和 7 领域 和 entities 领域 drupal 相关 的问题

Create Entity Programmatically in Drupal


7
vote

问题

中文

我通过实体建设套件创建了一个实体,最初我想使用规则来创建新实体,但实体被击落,字段不会在规则中暴露(截至目前,有人试图工作为此),但在Intm中我想写一个创建一个实体的简单函数,我假设我假设的形式创建节点,但我已经这样4小时了,我没有获得一英寸,我有Entity_Create和Entity_Save,但他们没有多大,我找不到任何关于它的文档。

我希望如何从使用eCk或通过​​代码制作的捆绑包创建示例实体。

非常感谢

编辑:我需要弄清楚的最后一件事是如何指定附加到实体的字段的名称,以便我也可以为那些输入的值输入。

  $values = array('uid' => 1, 'field_receipt_prod_ref' => 1, 'type' => 'receipt');         $new_ent = entity_create('receipt', $values)->save();   
英文原文

I created an entity via Entity Construction Kit, Initially I wanted to use rules to create the new entity but the entity is fielded and the fields don't get exposed in rules (as of now, someone is trying to work on a patch for that), but in the interm I wanted to write a simple function that creates a entity, which I assumed would be somewhat like creating a node programmatically, but I've been at this for like 4 hours and I haven't gained an inch, I have entity_create and entity_save but they don't do much and I can't find any documentation on it.

What I'd like to see is how to create an example entity from a bundle made with eck, or through code, that is fielded.

Thanks so much

Edit: The last thing I need to figure out is how to specify the name of the fields that are attached to the entity so I can enter values for those as well.

$values = array('uid' => 1, 'field_receipt_prod_ref' => 1, 'type' => 'receipt');         $new_ent = entity_create('receipt', $values)->save(); 
           
   
       

回答列表

15
 
vote
vote
最佳答案
 

你所拥有的大多数看起来都看起来不太糟糕。您缺少的字段的关键问题是它们具有一种语言,它们可以是多值的,并且该值通常存储在"值" 子键中。我假设REF字段是一个NodeReference,这意味着它实际上与 nid 而不是 value

您可以做的最简单的事情,看看这是如何构建的是安装 Devel 模块,并使用 Devel 选项卡来查看结构。不确定是否与ECK实体一起显示,但它为节点确实如此。

试试:

  $new_ent = entity_create('receipt', array(   'uid' => 1,   'type' => 'receipt', //bundle   'field_receipt_prof_ref' => array(           LANGUAGE_NONE => array(       0 => array(         'nid' => 1,       ),     ),   ), ))->save();   
 

Most of what you have doesn't look too bad. The key thing with fields that you are missing is that they have a language, that they can be multi-valued, and that the value is generally stored in a 'value' subkey. I'm assuming that the ref field is a nodereference, which means it's actually stored with nid instead of value.

The easiest thing you can do to see how this is structured is to install the Devel module, and use the Devel tab that to look at the structure. Not sure if that shows up with ECK entities, but it does for Nodes.

Try this:

$new_ent = entity_create('receipt', array(   'uid' => 1,   'type' => 'receipt', //bundle   'field_receipt_prof_ref' => array(           LANGUAGE_NONE => array(       0 => array(         'nid' => 1,       ),     ),   ), ))->save(); 
 
 
 
 
27
 
vote

更简单的方法是在 <代码> entity_metadata_wrapper() 。

  $e = entity_create($entityType, array('type' => $bundleName)); $ew = entity_metadata_wrapper($entityType, $e); $ew->field_name->set('value'); $ew->save();   
 

The simpler approach is with the help of entity_metadata_wrapper().

$e = entity_create($entityType, array('type' => $bundleName)); $ew = entity_metadata_wrapper($entityType, $e); $ew->field_name->set('value'); $ew->save(); 
 
 
15
 
vote
vote
最佳答案
 

你所拥有的大多数看起来都看起来不太糟糕。您缺少的字段的关键问题是它们具有一种语言,它们可以是多值的,并且该值通常存储在"值" 子键中。我假设REF字段是一个结头引用,这意味着它实际上与 nid 而不是 value

您可以做的最简单的事情,看看它是如何构建的,是安装 Devel 模块,并使用 Devel 选项卡来查看结构。不确定是否与ECK实体一起显示,但它为节点确实如此。

试试:

  $new_ent = entity_create('receipt', array(   'uid' => 1,   'type' => 'receipt', //bundle   'field_receipt_prof_ref' => array(           LANGUAGE_NONE => array(       0 => array(         'nid' => 1,       ),     ),   ), ))->save();   
 

Most of what you have doesn't look too bad. The key thing with fields that you are missing is that they have a language, that they can be multi-valued, and that the value is generally stored in a 'value' subkey. I'm assuming that the ref field is a nodereference, which means it's actually stored with nid instead of value.

The easiest thing you can do to see how this is structured is to install the Devel module, and use the Devel tab that to look at the structure. Not sure if that shows up with ECK entities, but it does for Nodes.

Try this:

$new_ent = entity_create('receipt', array(   'uid' => 1,   'type' => 'receipt', //bundle   'field_receipt_prof_ref' => array(           LANGUAGE_NONE => array(       0 => array(         'nid' => 1,       ),     ),   ), ))->save(); 
 
 
 
 
27
 
vote

更简单的方法是在 <代码> entity_metadata_wrapper() 。

  {# /**  * @file  * Theme override for an 'input' #type form element.  *  * Available variables:  * - attributes: A list of HTML attributes for the input element.  * - children: Optional additional rendered elements.  *  * @see template_preprocess_input()  */ #} <button{{ attributes }}>   <svg class="icon search-box__open">     <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/themes/custom/mytheme/build/img/svg-sprite.svg#icon-search"></use>   </svg> </button> 0  
 

The simpler approach is with the help of entity_metadata_wrapper().

$e = entity_create($entityType, array('type' => $bundleName)); $ew = entity_metadata_wrapper($entityType, $e); $ew->field_name->set('value'); $ew->save(); 
 
 

相关问题

1  投票/下模块未定义常量错误[已关闭]  ( Vote up down module undefined constant errors ) 
关闭。这个问题是 off-topic 。它目前不接受答案。 想要改进这个问题? 更新问题它是 - 主题用于卸妆答案。 关闭 9年前。 ...

1  使用或扩展模块功能  ( Use or extend module functionallity ) 
最近我们开始了一个proyect,在那里我们需要实现一个应该能够管理谷歌地图标记和位置的网页,并在它们上具有句号。然而,要求是将其作为Drupal模块执行,以便客户端将其嵌入其现有的网页上由Drupal提供支持。 我有一个强大的背景使用JSF等Java技术开发网页,我以前的一些经验使用PHP MVC框架,如蛋糕PHP...

2  如何在注册表格上可见的分类学期概要文件字段的自动完成功能?  ( How to get the autocomplete feature for a taxonomy term profile field visible on ) 
我有Profile2和Profile2注册路径模块启用,我设置了两个不同的配置文件,并且对于其中一个不同的配置文件,我创建了一个具有自动完成术语小部件的分类项的字段(标记)。 当在管理界面中添加用户时,我有自动完成的小部件工作,但是对于匿名用户尝试创建一个配置文件,窗口小组件甚至没有附加到该字段......我知道它没...

0  如何修改作者窗格以添加配置文件字段的正确方法?  ( Whats the correct way to modify the author pane to add profile fields ) 
我想从用户配置文件中添加几个字段到作者窗格。 在author-pane.tpl.php文件中,我添加了以下行。 $fname = $account->field_profile_firstname[LANGUAGE_NONE][0]['value']; $lname = $account->field_...

1  电子邮件未在专用VPS上发送  ( Email isnt sent on dedicated vps ) 
我在用于通过mimemail发送电子邮件的自定义模块中有此代码 if (!isset($message['headers'])) $message['headers'] = array('From' => $from, 'Sender' => variable_get('site_name', 'Drupal...

2  消息+添加类  ( Message add class ) 
我需要将另一个类添加到消息div。该类必须是创建消息的模块的名称。 示例:通过"简单的敏感" 模块添加新邮件。然后消息div应该是"div.Error.simple_suscription" 我需要这个,因为我有,在#main中联系/评论表单,#footer有一个新闻稿软件的表单。加上我正在为消息制作图像。 谢谢你...

0  基于分类术语显示某些内容对角色  ( Show certain content to roles based on taxonomy terms ) 
我正在尝试为网站上的用户个性化观看体验。我正在尝试弄清楚如何创建一个视图,该视图将显示标记为具有角色'a_role'的分类学术语"a_term" 标记的内容。我想用这些不同的标签标记我的所有内容,以便使用'b_role'的用户将看到内容标记为"b_term" ,'c_role' - &gt; 'c_term'等......

1  如何在Ajax回调循环期间从字段窗口小部件获取值?  ( How to get value from field widget during ajax callback loop ) 
在我的表单上的选择元素通过Ajax回调处理。在表单上有一个 MultiSelect 小部件在表单上,​​我希望看到字段的新值就像表格已提交。但是,$ form_state ['值'] ['my_multiselect']始终为null,当在ajax回调期间在表单构建器函数中检查。 MultiCelect在哪里构建形式...

0  在db_select对象上使用call_user_func_array  ( Using call user func array on the db select object ) 
call_user_func_array()使调用变量函数与一组参数相当简单。我想和 db_select() 通过各种选项到不同的方法。从 6.x 7.x 例子。如何在D7中做一些类似的东西? d6代码 <?php // These 2 lines return the same thing in D6...

2  在Drupal 7发布新内容时,通过电子邮件发送所有用户  ( Email all users when a new content is published in drupal 7 ) 
我想在网站上发布新内容时发送电子邮件通知。如果我可以通过 Actions - 使用动作&amp,它会有所帮助触发器我可以使用令牌来邮寄单个用户,即节点的作者。但是如何将电子邮件通知发送到全部身份验证的用户 ? p.s。电子邮件出现在BCC字段中,以避免垃圾邮件。我搜索了很多,但没有找到特定的解决方案。 ...

4  如何为网站上所有现有帐户分配新角色?  ( How do i assign a new role to all the existing accounts on the site ) 
我网站上有超过300个用户。我想为他们分配一个我刚刚创建的新角色。 如何实现这一目标? ...

6  安装有数据库更新的版本后是否有一种安全地降级模块?  ( Is there a way to safely downgrade modules after installing a version that has a ) 
我有一个有很多模块的网站运行drupal 7.我刚安装了一堆模块更新,ran update.php ,然后开始运行一些测试,我注意到了其中一个模块更新在我的网站上打破了一个重要的功能。 经过一些更多的测试,我发现哪个模块更新打破了函数(从RC1到RC2的更新)。将此模块恢复返回到以前的版本(RC1)还原我网站上的函...

0  UI问题与“注册”模块  ( Ui issues with the registration module ) 
我正在使用我的第二个Drupal 7站点,并尝试第一次创建"注册" 和"注册视图" 模块(7.x-1.0-alpha5),以创建成员可以加入事件的事件系统并查看谁否则加入。 对于此,我创建了一个内容类型"事件" ,其中事件字段以及事件的注册类型(有一些附加注册字段)。然后我将注册添加为"事件" 字段。到目前为止这么好...

1  如何使用工具栏来获取下拉菜单。 [关闭]  ( How do you get dropdown menus with toolbar module ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

1  ajaxied群体旗帜  ( Ajaxified group of flags ) 
我有一个名为电影的自定义内容类型。 每个用户必须有3部电影列表: - 1)看到 2)希望看到 3)现在看着 现在,我正在通过添加三个标志(看到,想看,观看)在电影内容上解决这些问题。 这是在每个电影节点和预告片上显示这3个标志。通过单击这些标志,用户可以将该特定电影添加到相应的列表中。 但这3个按钮使看起来...

7  什么是最好的标记小部件?  ( What is the best tagging widget ) 
我正在使用标记模块作为我的标记小部件,直到其状态更改为 Maintenance status: Unsupported < /代码>。现在我正在寻找一个替代品。搜索Drupal.org后,我认为d7的标记窗口模块不稳定: nice_tags 只d6 tag_editor 只d6 active_tag...

1  vbo in视图中的规则  ( Rules with vbo in views ) 
我有一个查看以显示内容类型(a)的所有节点的视图(使用表显示格式),并且该内容类型具有对另一内容类型(b)的节点的引用。我在该视图中添加了一个VBO字段。 如何通过在内容类型B中仅设置一个时间,为所选节点(内容类型A)的每个节点创建内容类型B节点,以便在内容类型B中创建表单? (我需要为每个节点创建具有相同字段值的...

0  使用URL别名进行页面参数  ( Use url alias for page parameters ) 
我是drupal新的,并创建了一个基本页面,其中清洁的URL是 $this->entityTypeManager()->getStorage($type)->getEntityType()3 如果我想要一个月的Todo,我可以做到 $this->entityTypeManager()->getStorag...

3  尝试通过ajax提交节点添加表单但失败  ( Trying to submit a node add form via ajax but failing ) 
我只是尝试通过ajax提交一个节点添加表格: function input_form_alter(&$form, &$form_state, $form_id) { switch ($form_id) { case 'page_node_form': $form['actions']['s...

1  基于分类管理分配权限  ( Assigning permissions based on taxonomies ) 
我有一个看起来像这样的分类分类: 学校&gt;类&gt;项目 你可以拥有一个项目的一部分,这是某一学校的一部分。我想制作它,以便只有在特定类中注册的学生可以向该类/项目提交内容。此外,我想拥有一个称为教师的半管理员角色,只能将学生注册到他们管理的课程,但不能将学生注册到其他课程中。 我发现一个名为基于分类的权限的折...




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


Licensed under cc by-sa 3.0 with attribution required.