내 의견이 필요한 Fivestar 평가 필드는 '별'이라고 나는 다음과 같은 사용자 정의 모듈을 숨겨왔다 (참조 : https://drupal.stackexchange.com/questions/90629/how-to-hide-rating-field-when-adding-comment-to-own-node를)다른 사용자의 댓글을 편집 할 때 Fivestar 필드를 숨기는 방법? 기사에
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']);
}
}
}
를 관리자로서, 내가 의견을 편집 할 수있는 권한을했습니다 다른 사용자. 사용자가 자신의 기사에 댓글을 달았다고 가정 해보십시오. 즉, 위의 코드로 인해 '별'필드를 설정할 필요가 없습니다. 그러나 그 주석을 편집하려고 할 때 을 수행하면은 '별'의 값을 선택해야합니다.
어떻게 방지 할 수 있습니까? 주석을 작성한 사용자의 uid가 주석을 편집 한 사용자의 uid와 다른지 확인하는 것으로 충분합니다. 마지막으로, 새 코멘트를 남길 때 별을 선택해야 할 의무가 보존되어야한다는 표시를하십시오! 편집
:
"Notice: Undefined index: values in hiderating_form_alter()".
올바른 무엇 : 나는 다음과 같은 오류를 얻을 수 있기 때문에,
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']
잘 정의되지 않은 : 나는 다음 코드를 시도 암호?
'$ form_state [ 'values']'는 제출 후에 만 존재합니다. 사용자가 주석 소유자이거나 관리자 ("관리자 역할을 가진 모든 사용자"가 정의한대로) 인 경우'field_stars' 필드를 제거 하시겠습니까? – bishop
@bishop : 코멘트를 작성한 사용자의 uid가 코멘트를 편집 한 사용자의 uid와 다른 경우'field_stars'를 표시하면 안됩니다. 다른 사용자의 주석을 편집 할 수있는 유일한 사용자는 관리자 역할을 가진 사용자이기 때문에 위의 내용만으로도 충분합니다. – Jeroen
그래서 문제는 주석 객체를 필요로합니다. 나는 무엇이든 시도하기 위해 워크 스테이션에 가까이 있지 않기 때문에 수의사가 될 수없는 적절한 대답을주고 싶지 않습니다. '$ form [ '# node'] -> comment'에 접근 할 수 있습니까? 그렇지 않다면'$ form'을 덤프하고 게시 할 수 있습니까? – bishop