1

ユーザーが既にコメントしたノードにコメントするときに、コメント フォームの Fivestar 評価フィールド (「field_stars」と呼ばれる) を非表示にしたいと考えています。私のサイトにはCommentedというフラグがあり、誰かがコメントしたときにコメンテーターに代わってノードにフラグを立てるルールがあります (これは完全に機能します)。ここで見つけた情報に基づいて、問題を解決しようとしました:

function hiderating_form_alter(&$form, &$form_state, $form_id) {
  global $user;
  $flag = flag_get_flag('commented') or die('no "commented" flag defined');
  if ($form_id == "comment_node_stuff_form") {
   if ($flag->is_flagged($form['#node']->uid, $user->uid)) { 
      unset($form['field_stars']);
    }
  }
}

残念ながら、何も変わりません(エラーも発生しません)。私は何を間違えましたか?


@jerdiggity のコードでデバッグした後、次のようになります。

DEBUG: form id "comment_node_stuff_form" found. Debugging...
DEBUG: The code $flag->is_flagged($form["#node"]->uid, $user->uid) is returning FALSE.

(もちろん、私も取得しDEBUG: final form structure:ますが、ここに貼り付けるには時間がかかります)。データベースに保存されているため、フラグが認識されない理由がわかりません...

4

1 に答える 1