我对文章的评论已被称为“星”所要求的五星评级领域,我用下面的自定义模块藏(请参阅: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不同就足够了。最后,请标记我自己留下新评论时选择明星的义务必须保留!
编辑:我尝试下面的代码:
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']
并不明确,因为我得到以下错误:
"Notice: Undefined index: values in hiderating_form_alter()".
什么是正确的码?
'$ form_state ['values']'仅在提交后才存在。如果用户是评论所有者或管理员(如“任何具有管理员角色的用户”所定义的),您是否希望移除field_stars字段? – bishop
@bishop:当编写评论的用户的uid与编写评论的用户的uid不同时,不应显示“field_stars”。以上就足够了,因为只有编辑其他用户评论的用户才是具有管理员角色的用户。 – Jeroen
所以问题归结为需要评论对象。我不在我的工作站附近尝试任何东西,所以我不想给出我无法审查的正确答案。你有权访问'$ form ['#node'] - > comment'?如果没有,你可以转储并发布'$ form'吗? – bishop