簡體   English   中英

編輯其他用戶的評論時如何隱藏Fivestar字段?

[英]How to hide Fivestar field when editing a comment from another user?

我對文章的評論中有一個必填的Fivestar評分字段,稱為“ Stars”,我使用以下自定義模塊將其隱藏(請參閱: https : //drupal.stackexchange.com/questions/90629/how-to-hide-rating-field-當添加評論到自己的節點 ):

function hiderating_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  if ($form_id == "comment_node_article_form") {
   if ($form['#node']->uid == $user->uid) { 
      unset($form['field_stars']);
    }
  }
}

作為管理員,我有權編輯其他用戶的評論。 假設用戶對自己的文章發表了評論。 這意味着由於上面的代碼,他不必設置“ Stars”字段。 但是,當我嘗試編輯該注釋時, 確實必須為“星標”選擇一個值。

我該如何預防? 足以檢查來自寫評論的用戶的uid與來自編輯評論的用戶的uid是否不同。 最后,標記必須保留我自己發表新評論時選擇明星的義務!


編輯:我嘗試以下代碼:

function hiderating_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  $comment->uid = $form_state['values']['uid'];
  if ($form_id == "comment_node_article_form") {
   if ($comment->uid != $user->uid) { 
    unset($form['field_stars']);
    }
  }
}

顯然, $form_state['values']定義不正確,因為出現以下錯誤:

“注意:未定義的索引:hiderating_form_alter()中的值”。

什么是正確的代碼?

編輯中的代碼不起作用,因為在提交之前不存在$form_state['values'] 這是正確的代碼:

function hiderating_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  if ($form_id == "comment_node_article_form") {
   if ($form['uid']['#value'] != $user->uid AND $form['uid']['#value'] != 0) { 
    unset($form['field_stars']);
   }
  }
}

使用dpm($form) ,我發現$form['uid']['#value'] #value $form['uid']['#value']返回編寫評論的用戶的uid。 僅當編輯注釋時,該值才不同於0。 當用戶編寫新注釋時,表單中的uid為0。這就是為什么if需要的if ,第二個AND的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM