如何在hook_node_load()中添加表单到$节点? -- 7 领域 和 forms 领域 和 nodes 领域 drupal 相关 的问题

How to add a form to $node in hook_node_load()?


1
vote

问题

中文

我想在传递到主题层之前向节点添加表单。

我的模块有一个 hook_node_load < / a>,如下:

  function gp_shop_node_load($nodes, $types) {   foreach($nodes as $nid => $node) {     //Determine if we should process. aka: only run on Record->type() types.     if (!in_array("product", $types)) {       continue;     }      $nodes[$nid]->gp_shop_order_button = "[BUTTON]";   } }   

此工作:如果它是类型"产品" ,则将文本 [按钮] 添加到$ node;

但是,在放置实际形式时,它在<码> Maximum function nesting level of '100' reached, aborting!中断 -Error中断。某种无尽的循环。如下:
      $nodes[$nid]->gp_shop_order_button = drupal_get_form("gp_shop_order_button", $node);   

编辑:在最终代码中,我可以在 drupal_render() 偶数中包装它;现在它没有任何区别。然后相关线路是:

  $nodes[$nid]->gp_shop_order_button = drupal_render(drupal_get_form("gp_shop_order_button", $product));   

然后与键盘挂钩进行表格。

  function gp_shop_order_button($form, &$form_state, $node) {   $form = array();    $form['submit'] = array(     '#type' => 'submit',     '#value' => 'Order',   );    return $form; }   

沿着$ node上的部分不具有非常相关的并且不会引起问题。刚刚在我的示例中留下它,以说明沿参数的要求。

我做错了什么?

英文原文

I want to add a form to a node before it is passed along to the theme layer.

My module has a hook_node_load, as follows:

function gp_shop_node_load($nodes, $types) {   foreach($nodes as $nid => $node) {     //Determine if we should process. aka: only run on Record->type() types.     if (!in_array("product", $types)) {       continue;     }      $nodes[$nid]->gp_shop_order_button = "[BUTTON]";   } } 

This works: the text [BUTTON] is added to $node if it is type "product";

However, when placing an actual form, it breaks in a Maximum function nesting level of '100' reached, aborting!-error. An endless loop of some sorts. As follows:

    $nodes[$nid]->gp_shop_order_button = drupal_get_form("gp_shop_order_button", $node); 

Edit: In the final code, I problably have to wrap this in a drupal_render() even; for now it makes no difference. The relevant line would then be:

$nodes[$nid]->gp_shop_order_button = drupal_render(drupal_get_form("gp_shop_order_button", $product)); 

And then with the callback-hook for the form.

function gp_shop_order_button($form, &$form_state, $node) {   $form = array();    $form['submit'] = array(     '#type' => 'submit',     '#value' => 'Order',   );    return $form; } 

The part about passing along the $nodeis not very relevant and is not causing the problem. Just left it in my examples here, to illustrate that passing along parameters is a requirement.

What am I doing wrong?

        
   
   

回答列表

2
 
vote

并不完全确定为什么 $config = Drupal::config('system.theme'); $theme = Drupal::theme()->getActiveTheme()->getName(); if ($theme == $config->get('admin')) { $attachments['#attached']['library'][] = 'XXXX/extra.admin'; } 5 不起作用,但某些试验和错误(与文档相比)导致我使用 $config = Drupal::config('system.theme'); $theme = Drupal::theme()->getActiveTheme()->getName(); if ($theme == $config->get('admin')) { $attachments['#attached']['library'][] = 'XXXX/extra.admin'; } 6 改为工作解决方案。

示例代码是:

  $config = Drupal::config('system.theme');  $theme = Drupal::theme()->getActiveTheme()->getName();  if ($theme == $config->get('admin')) {    $attachments['#attached']['library'][] = 'XXXX/extra.admin';  } 7  
 

Not entirely sure why hook_node_load does not work, but some trial and error (in contrast to the documentation) led me to a working solution using hook_node_view instead.

The example code being:

function gp_shop_node_view($node, $view_mode, $langcode) {   if ("product" == $node->type) {     if ($view_mode == 'full' && node_is_page($node)) {       $node->content['gp_shop_order_button'] = drupal_get_form("gp_shop_order_button", $node);       }     }   } }  function gp_shop_order_button($form, &$form_state, $node) {   $form = array();    $form['submit'] = array(     '#type' => 'submit',     '#value' => 'Order',   );    return $form; } 
 
 

相关问题

2  同一页面中的多个寻呼机  ( More than one pager in the same page ) 
我有一个页面,其中包含两个视图,其中一个列出最新消息和另一个列表最新的事件 现在问题是每个视图都有一个寻呼机,但是当我更改其中一个的页面时,两个视图将改变。 即,如果我想在新闻视图中看到页码3,则事件视图还将更改为页码3 是有一种方法可以以编程方式制作 此外,我不想使它成为Ajax,因为我需要分享URL 感谢 ...

5  如何解决这些安装错误? [关闭]  ( How do i fix these installation errors ) 
此问题似乎在帮助中心中定义的范围内涉及Drupal。。 想要改进这个问题?更新问题,所以它是关于drupal答案的主题。 ...

3  多步注册表格有两个角色  ( Multistep registration form for two roles ) 
目标: 我有两个不同的用户角色: 借款人 提供者 这些用户有5个类别可以选择(如果他们想要选择所有类别): 市场1 市场2 市场3 市场4 市场5 每个角色都有不同的注册表格,具体取决于他们挑选的类别。假设: 借款人角色: If Market 1: step one: form A...

1  在规则中选择正确的实体和字段  ( Selecting correct entities and fields in rules ) 
我正在使用规则界面来设置关于我正在建设的预订网站的一些规则。 (在Drupal 7中使用Agreservations + Ubercart) 我有一个名为持续时间的字段,它是一个名为预留的实体的一部分,它本身就是ubercart订单实体的一部分。我难以让我的条件在持续时间的价值上射击,因为有许多不同的实体,我不确定与...

0  弹出窗口没有显示好  ( Popup not displaying well ) 
我正在使用popup模块(http://drupal.org/project/popup)到pop块。它在Drupal 7中的默认核心主题工作正常,但是当我使用自己的自定义主题时,弹出窗口窗口分手。我尝试添加CSS样式,但这似乎没有工作。如果有人对如何解决这个问题有一个想法,请帮助我。 ...

3  用于文本字段错误的字段API Field_schema  ( Field api field schema for text field error ) 
我使用字段API建立了自定义字段。我定义了以下元素: $element['tabcontent'] = array( '#title' => t('Tab content'), '#type' => 'text_format', '#required' => $required, ...

3  关于Drupal与Android互动  ( About drupal interact with android ) 
要求:〜 Android应用程序将JSON数据发布到某个URL。 drupal可以接收JSON数据,然后以JSON格式验证JSON数据并返回结果数据。 我的问题是接收JSON数据并返回JSON数据步骤。我可以使用什么模块或API? 如果您可以共享样本,则会更高帮助。 ...

5  我可以使用db_update来更新字段(将字符串附加到数据库中的当前字符串)  ( Can i use db update to update a field appending a string to the current string ) 
是可以做的事情: db_update('my_module_table')->fields( array('myfield' => <myfield> + 'newstring') ); 或者我必须首先使用 db_select()? 也许有所同时使用 db_query()? ...

6  有没有办法创建分类路径重定向?  ( Is there a way to create a taxonomy path redirect ) 
我正在尝试为特定分类URL创建分类学重定向。基本上是什么分类系统重定向到drupal 6,但对于drupal 7 。我已经搜索了 hook_term_path 但看不到它。 最后,我需要这些链接与特定的Profile2配置文件相关联。 这是可能的吗? ...

0  将Formapi表单发布到另一条路径?  ( Posting a formapi form to another path ) 
我有一个简单的形式,呈现"命令这个" 按钮。该表单放在节点上。当人们按下该按钮时,我想开始一个订购工作流程。 目前滴水方式似乎是: 在 node/123 ,上为节点添加表单 用户点击表格提交,post转到 node/123 。 hook_form_submit() 被解雇,接收发布的值Trough表单API。 ...

5  将节点连接到菜单链接或将自定义字段附加到菜单链接?  ( Attach a node to a menu link or attach custom fields to menu links ) 
我的客户希望将内容添加到主菜单中的顶级链接,以便在下拉菜单中显示"特色" 内容。他们必须能够选择将显示哪些内容,以及它将与之关联的菜单链接。我认为我有两个选择: 1)在"菜单中" 创建"功能" 内容类型,并添加顶级菜单链接作为字段的下拉菜单。此问题的问题是我不确定如何输出将列出顶级主菜单链接的自定义字段。目前似乎没...

3  用支付网关上的Ubercart商店上的AdWords转换跟踪?  ( Adwords conversion tracking on ubercart store with payment gateway ) 
是可以实现AdWords转换跟踪,以便通过支付门户的考虑转换(客户离开站点暂时退回,并且通常会转换为期,因此暂时停留)? 我已经注入了AdWords跟踪代码来订购完成页面,但它只跟踪计费选项(客户不离开网站)的订单。 如果这是不可能的,是否可以注入订单审查页面的代码,如果是的话? (这是糟糕的,因为一些客户不会完成订...

1  如何从模块内更新节点的文件字段?  ( How do i update a nodes file field from within a module ) 
我有一个文件: /tmp/new.zip ,我有一个节点, $node ,具有文件字段, <a>0 。目前, <a>1 是保存到 998876612 字段中的文件。我想把 <a>3 放在那里。 我现在有什么: <a>4 <a>5 在这里失败,因为 <a>6 应该是一个数组,而不是一个对象。我想象有一个函数...

1  如何设置响应URL以使用HTTPS?  ( How can i set a response url to use https ) 
我有一个JSON响应,我需要强制在直播服务器上使用HTTPS。 所以我需要检测响应URL是否使用HTTP或HTTPS。 如果它使用HTTP我需要将其切换到HTTPS。 如何强制标题使用https? ...

0  显示消息或块当查看页面为null或空  ( Display message or block when view page is null or empty ) 
我有一个 Content Type : Events ,我已经创建了3个事件,他们目前 published 并显示在 Page IE Display as View 。 如果没有发布 Events 那么它应该将自定义消息显示为"无事件" 或"块" 。 我正在尝试使用null值的视图,但我无法得到它。是否有这样的东...

0  Drupal Wysiwyg编辑器  ( Drupal wysiwyg editor ) 
当人们添加评论时,我想有一个简单的wysiwyg,当人们编辑基本页面的正文时。 看起来像这样的东西: 任何想法? ...

17  如何通过比较2字段来筛选视图。如果字段-A <FIELD-B  ( How to filter view by comparing 2 fields if field a field b ) 
我有一个有2个价格字段的产品内容类型。 我想创建一个显示所有产品的视图,其中Price-a低于Price-b。 我希望我能只能添加一个过滤器,然后选择价格 - 然后选择工作量小于并将值设置为price-b,但是您不能这样做。 我已经研究了一个观点钩子,主要是hook_views_query_alter但没有运气。 我...

2  可以在服务器中重命名上传的文件以避免名称碰撞?  ( Can uploaded files be renamed in the server to avoid name collision ) 
我希望我的网站托管一些图像。用户能够将图像上载为内容类型。 如果两个用户创建内容并使用完全相同的名称(MyImage.png)创建内容并上传图像,则旧图像文件是否会在服务器中覆盖(因此,两个内容条目都将最终包含相同的图像文件)? 如果是的,它是相当令人不安的。所以现在我想知道:有一个模块是否重命名上传的文件,以便它不...

0  如何构建与清洁和“脏”URL兼容的链接?  ( How to build links compatible with clean and dirty urls ) 
我有一个不支持Clean URL的开发网站,我的生产网站确实支持它们。 如果我在节点的主体中构建链接,如: <a href="view-something/4,7">View something</a> 这在我的生产网站上显示了OK,但在开发网站时提供了404个。 如何构建普遍的良好网址? ...

1  在Drupal 7中为同一图像提供几个下载选项  ( Provide several download option for same image in drupal 7 ) 
有人会有什么想到如何在Durpal 7中创建同一图像的几个下载选项。 示例网站是: http://www.travesto.com/content/101jpg -Anime-Airmated 其中启用了几个下载选项。 我想为我的生日照片创建类似的选择。我认为可以是视图模块在这里使用。但不确定。如果有人有任何想法这样...




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


Licensed under cc by-sa 3.0 with attribution required.