drupal-7 - 将默认值设置为输入字段drupal 7
问题描述
我开始了一个使用实体注册的项目。经过身份验证的用户可以为他注册,也可以为其他人注册一个事件。我在帐户创建中设置了一些额外的字段(姓名和姓氏)。
我还设置了名字和姓氏来注册一个活动。我想避免经过身份验证的用户用相同的信息填写两次表格。
为此,我创建了一个带有钩子的模块,我可以在其中检索用户信息。
function mymodule_form_alter(&$form, $form_state, $form_id) {
// retrieve name & surname
global $user;
$user_fields = user_load($user->uid);
$name = $user_fields->field_user_name['und']['0']['value'];
$surname = $user_fields->field_user_surname['und']['0']['value'];
// check the form_id
if($form_id=='registration_form'){
$form['field_new_name']= array('#default_value' => $name);
$form['field_new_surname']= array('#default_value' => $surname);
// $form['field_new_name']['#value'] = $name;
// $form['field_new_name']['widget'][0]['value']['#default_value'] = "joe";
}
}
我成功检索数据,但我未能设置输入以在输入文本字段中显示此值...
我还有一个选择菜单来定义谁在注册:
<select id="edit-who-is-registering" name="who_is_registering" class="form-select required">
<option value="" selected="selected">- Select -</option>
<option value="registration_registrant_type_me">Myself</option>
<option value="registration_registrant_type_user">Other account</option>
<option value="registration_registrant_type_anon">Other person</option>
</select>
在这里,我不知道如何测试选择输入是否在我尝试创建的钩子中具有值“registration_registrant_type_me”。理想情况下,我想用设置的值隐藏姓名和姓氏字段......
解决方案
获取用户信息:
$user_fields = user_load($user->uid);
$name = $user_fields->field_user_name['und']['0']['value'];
$surname = $user_fields->field_user_name['und']['0']['value'];
然后在字段中显示值(我被 kint 保存):
$form['field_new_name']['und'][0]['value']['#default_value'] = $name;
$form['field_new_surname']['und'][0]['value']['#default_value'] = $surname;
推荐阅读
- javascript - 将 api 调用中的道具发送到另一个反应组件时遇到问题
- c# - 通过 Nuke.Common/NuGet.CommandLine 部署 NuGet 包时如何通过 Azure Auth
- node.js - 使用 node.js 提供图像的 WebServer
- reactjs - 将 aria-role 传递给 Material UI
零件 - javascript - 为什么需要将 Tealium utag 脚本动态添加到页面中?
- javascript - 创建反应应用程序:setupProxy 不断返回被 CORS 策略阻止的 401,不适用于远程 URL?
- python - Groupby,转换 - 恢复到原始表
- java - 使用 Java 打印 API 打印多页(可能是打印机或 PDF)文档时出现错误的迭代
- ssl - Pickle 一个 python 请求会话以在不同的应用程序运行中实现“TLS 会话恢复”
- mysql - 有没有办法用 node.js mysqldump 模块导出存储过程