0

記事に対する私のコメントには、「星」と呼ばれる必須の Fivestar 評価フィールドがあり、次のカスタム モジュールで非表示にしました ( https://drupal.stackexchange.com/questions/90629/how-to-hide-rating-field-を参照)。 when-adding-comment-to-own-node ):

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() の値」.

正しいコードは何ですか?

4

1 に答える 1