hook_comment: insert action nincs

fox mulder képe

Sziasztok!

Saját modulban használnám a hook_comment-et, kezdetnek ilyenformán:

function mymodule_comment(&$comment, $op) {
    switch ($op) {
      case 'insert':
        drupal_set_message('Insert:<pre>' . print_r($comment, TRUE) . '</pre>');
      break;
      case 'update':
        drupal_set_message('Update:<pre>' . print_r($comment, TRUE) . '</pre>');
      break;
      case 'delete':
        drupal_set_message('Delete:<pre>' . print_r($comment, TRUE) . '</pre>');
      break;
      case 'view':
        drupal_set_message('View:<pre>' . print_r($comment, TRUE) . '</pre>');
      break;
    }
}
vagy
function mymodule_comment(&$comment, $op) {
    drupal_set_message('Op: ' . $op);
}

Az $op értéke sosem lesz 'insert' vagy 'update', akkor sem, ha új commentet adok a node-hoz, vagy szerkesztem (ekkor is csak 'view' az $op értéke). A 'delete' működik. Találkozott már ezzel valaki?
Drupal verzió: 
fox mulder képe

Hülye vagyok. Valójában ez volt a modulban:

function mymodule_comment(&$comment, $op) {
  if ($comment -> ...) {
    drupal_set_message('Op: ' . $op);
  }
}

És insert esetén a $comment még nem létezik.
Bocs. Nem lehet törölni ezt a fórumtémát?
0
0

Fox Mulder

Illyés Edit képe

Nem, nagyon tanulságos. :)

0
0
fox mulder képe

Legalábbis a dokumentáció szerint:

$a1 Dependent on the action being performed.

* For "validate","update","insert", passes in an array of form values submitted by the user.
* For all other operations, passes in the comment the action is being performed on.

A 'validate', 'update', 'publish' és 'insert' esetén az $a1 nálam üres.

0
0

Fox Mulder

fox mulder képe

A 'validate', 'update' és 'insert' esetén az $a1 tömb, a többi esetben objektum. Vagyis a fenti kódban:

function mymodule_comment(&$comment, $op) {
  if ($comment -> nid) {
    drupal_set_message('Op: ' . $op);
  }
}
helyett
function mymodule_comment(&$comment, $op) {
  if ($comment['nid']) {
    drupal_set_message('Op: ' . $op);
  }
}
is lehet a művelettől függően.
0
0

Fox Mulder