1. <tfoot id='b8EWW'></tfoot><legend id='b8EWW'><style id='b8EWW'><dir id='b8EWW'><q id='b8EWW'></q></dir></style></legend>
      <i id='b8EWW'><tr id='b8EWW'><dt id='b8EWW'><q id='b8EWW'><span id='b8EWW'><b id='b8EWW'><form id='b8EWW'><ins id='b8EWW'></ins><ul id='b8EWW'></ul><sub id='b8EWW'></sub></form><legend id='b8EWW'></legend><bdo id='b8EWW'><pre id='b8EWW'><center id='b8EWW'></center></pre></bdo></b><th id='b8EWW'></th></span></q></dt></tr></i><div id='b8EWW'><tfoot id='b8EWW'></tfoot><dl id='b8EWW'><fieldset id='b8EWW'></fieldset></dl></div>
        <bdo id='b8EWW'></bdo><ul id='b8EWW'></ul>
    2. <small id='b8EWW'></small><noframes id='b8EWW'>

        如何在节点保存在 Drupal 8 之前操作值?

        How to manipulate value before node is saved in Drupal 8?(如何在节点保存在 Drupal 8 之前操作值?)

            <tbody id='vSDdE'></tbody>

          1. <legend id='vSDdE'><style id='vSDdE'><dir id='vSDdE'><q id='vSDdE'></q></dir></style></legend>
              <tfoot id='vSDdE'></tfoot>
                <bdo id='vSDdE'></bdo><ul id='vSDdE'></ul>

                <small id='vSDdE'></small><noframes id='vSDdE'>

                <i id='vSDdE'><tr id='vSDdE'><dt id='vSDdE'><q id='vSDdE'><span id='vSDdE'><b id='vSDdE'><form id='vSDdE'><ins id='vSDdE'></ins><ul id='vSDdE'></ul><sub id='vSDdE'></sub></form><legend id='vSDdE'></legend><bdo id='vSDdE'><pre id='vSDdE'><center id='vSDdE'></center></pre></bdo></b><th id='vSDdE'></th></span></q></dt></tr></i><div id='vSDdE'><tfoot id='vSDdE'></tfoot><dl id='vSDdE'><fieldset id='vSDdE'></fieldset></dl></div>
                • 本文介绍了如何在节点保存在 Drupal 8 之前操作值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一个编辑节点表单.当用户输入新值并单击提交以编辑节点时,我首先想取回旧节点,操作该值,然后保存/更新节点.

                  I have an editing node form. When user enters new value and clicks on submit to edit the node, I first want to get the old node back, manipulate the value and then just save/update the node.

                  以下是我的解决方案,但它不起作用.

                  Below is my solution, but it does not work.

                  function custom_module_form_node_form_alter(&$form, FormStateInterface $form_state) {
                      $editing_entity = $form_state->getFormObject()->getEntity();
                  
                      if (!$editing_entity->isNew()) {
                          $form['actions']['submit']['#submit'][] = 'custom_module_node_form_submit';
                      }
                  }
                  
                  function custom_module_node_form_submit($form, FormStateInterface $form_state) {
                     $editing_entity = $form_state->getFormObject()->getEntity();
                  
                     $entity = Drupal::entityTypeManager()->getStorage('node')->load($editing_entity->id());
                  }
                  

                  在 form_submit 钩子中,我试图取回旧节点,但已经太晚了,节点已经更新/保存.在 Drupal 8 中更新/保存节点之前,如何取回旧节点并操作该值?

                  In the form_submit hook, I tried to get the old node back but it is already too late and the node is already updated/saved. How can I get the old node back and manipulate the value before updating/saving the node in Drupal 8?

                  推荐答案

                  尝试使用hook_entity_presave():

                  /**
                   * Implements hook_entity_presave().
                   */
                  function YOUR_MODULE_entity_presave(DrupalCoreEntityEntityInterface $entity) {
                    switch ($entity->bundle()) {
                      // Here you modify only your day content type
                      case 'day':
                        // Setting the title with the value of field_date.
                        $entity->setTitle($entity->get('field_date')->value);
                       break;
                    }
                  }
                  

                  从这里采取的解决方案:https://drupal.stackexchange.com/questions/194456/how-to-use-presave-hook-to-save-a-field-value-as-node-title

                  Solution taken from here: https://drupal.stackexchange.com/questions/194456/how-to-use-presave-hook-to-save-a-field-value-as-node-title

                  您还可以获得旧值,例如:$entity->original.在这里查看:

                  Also you can get old value like: $entity->original. Check it out here:

                  https://drupal.stackexchange.com/questions/219559/how-to-get-the-original-entity-on-hook-entity-presave

                  这篇关于如何在节点保存在 Drupal 8 之前操作值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  How do I pass parameters into a PHP script through a webpage?(如何通过网页将参数传递给 PHP 脚本?)
                  PHP - include a php file and also send query parameters(PHP - 包含一个 php 文件并发送查询参数)
                  Where can I read about conditionals done with quot;?quot; and quot;:quot; (colon)?(我在哪里可以阅读有关使用“?完成的条件的信息?和“:(冒号)?)
                  Accessing arrays whitout quoting the key(在不引用键的情况下访问数组)
                  What is the name for the quot;lt;lt;lt;quot; operator?(“lt;lt;lt;的名字是什么?操作员?)
                  default as first option in switch statement?(默认为 switch 语句中的第一个选项?)
                • <small id='Ix36C'></small><noframes id='Ix36C'>

                    <i id='Ix36C'><tr id='Ix36C'><dt id='Ix36C'><q id='Ix36C'><span id='Ix36C'><b id='Ix36C'><form id='Ix36C'><ins id='Ix36C'></ins><ul id='Ix36C'></ul><sub id='Ix36C'></sub></form><legend id='Ix36C'></legend><bdo id='Ix36C'><pre id='Ix36C'><center id='Ix36C'></center></pre></bdo></b><th id='Ix36C'></th></span></q></dt></tr></i><div id='Ix36C'><tfoot id='Ix36C'></tfoot><dl id='Ix36C'><fieldset id='Ix36C'></fieldset></dl></div>
                      <bdo id='Ix36C'></bdo><ul id='Ix36C'></ul>
                        <tbody id='Ix36C'></tbody>

                        • <tfoot id='Ix36C'></tfoot>
                          <legend id='Ix36C'><style id='Ix36C'><dir id='Ix36C'><q id='Ix36C'></q></dir></style></legend>