drupal 7 – Cómo cambiar un formulario de adición de nodo sin cambiar el formulario de edición de nodo

Pregunta:

Estoy usando drupal 7

Estoy escribiendo un hook_form_alter personalizado, algo como esto

function mymodule_form_alter(&$form, &$form_state, $form_id){
    if($form_id == "rating_node_form")
        {
            // Do something
        }
}

parece que tanto el formulario de adición de nodo como el formulario de edición de nodo utilizan el mismo ID de formulario. Me pregunto si hay una manera de determinar el clima que está editando o agregando un nodo y realizar cambios en el formulario en consecuencia. ¿Tienen que tener siempre la misma forma exacta?

Respuesta:

node_object_prepare () , que se llama desde node_form() (el constructor de formularios para el formulario de edición de nodos), ejecuta el siguiente fragmento para verificar si se está agregando o editando un nodo:

  // If this is a new node, fill in the default values.
  if (!isset($node->nid) || isset($node->is_new)) {
    foreach (array('status', 'promote', 'sticky') as $key) {
      // Multistep node forms might have filled in something already.
      if (!isset($node->$key)) {
        $node->$key = (int) in_array($key, $node_options);
      }
    }
    global $user;
    $node->uid = $user->uid;
    $node->created = REQUEST_TIME;
  }

En su caso, podría utilizar un código similar al siguiente:

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == "rating_node_form") {
    $node = $form_state['node'];
    if (!isset($node->nid) || isset($node->is_new)) {
      // The node is new.
    }
  }
}

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım