gpt4 book ai didi

php - hook_form_alter 根据用户角色取消设置字段

转载 作者:可可西里 更新时间:2023-10-31 23:27:13 25 4
gpt4 key购买 nike

当我尝试使用 hook_form_alter 根据用户角色隐藏字段时遇到问题。我使用了 unset() 并从 $form 数组中删除了该字段,但它仍然在呈现表单时显示。

这是我的代码:

function mymodule_form_alter($form, $form_state, $form_id){
global $user;
if($form_id == 'my_content_type'){
if(array_key_exists(5,$user->roles) && !array_key_exists(3,$user->roles)){
if(empty($form_state['field']['args'][0]->title)){
unset($form['field_body']);
}
}
}
}

最佳答案

您应该将#access 属性设置为FALSE,而不是使用unset() 来隐藏表单元素。这使表单构建树保持完整,从而避免了其他模块试图访问或更改该信息时出现的问题。 Source

function MYMODULE_form_alter($form, $form_state, $form_id) {

global $user;
$account = $user;

if ($form_id == 'MYCONTENTTYPE_node_form') {

if (user_has_role(5, $account) && !user_has_role(3, $account)) {

if (empty($form_state['field']['args'][0]->title)) {

$form['field_body']['#access'] = FALSE;
}
}
}
}

如果这仍然不起作用,请仔细检查您的 if 请求。他们真的在做某事吗?您当前是否以相应用户身份登录?

关于php - hook_form_alter 根据用户角色取消设置字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50225949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com