我是Drupal 8的新手,我正在为我的公司做一个项目,请帮助解决这个问题。
我们已经从离子应用程序注册,我们希望发送数据到Drupal 8站点MySQL DB。
问题是,当我们在Drupal 8中使用多个注册模块为表单中的每个字段创建注册表单时,数据库中有一个单独的表,例如,username字段有自己的表。
我们如何将应用程序中的数据插入Drupal,以便用户可以从应用程序或网站注册?
我们在Drupal 8中使用多个注册模块。
我尝试过使用应用程序内浏览器(https://ionicframework.com/docs/native/in-app-browser)将表单嵌入到我们的应用程序中,但是它显示了带有页眉和页脚的整个页面,这是我们不想要的。
我还尝试将数据作为JSON文件发送,并使用PHP和MySQL命令将数据插入表中,但这是一项非常长且困难的任务。
let headers: any = new HttpHeaders({ 'Content-Type': 'application/json' }),
options: any = { "key": "create",
'id': obj.id,
'fullName': obj.fullName,
'email': obj.email,
'idNumber': obj.idNumber,
'gender': obj.gender,
'age': obj.age,
'phone': obj.phone,
'status': obj.status,
'qualifications': obj.qualifications,
'skills': obj.skills[0],
'city': obj.city,
'terms': obj.terms,
},
this.http.post(url2, JSON.stringify(options), headers)
.subscribe((data: any) => {
console.log('successfully added');
},
(error: any) => {
console.log('Something went wrong!', error);
});以及插入数据
// Retrieve the posted data
$json = file_get_contents('php://input');
$obj = json_decode($json);
$key = strip_tags($obj->key);
switch($key)
{
case "createTest":
$field_mdynt_alskn_target_id = filter_var($obj->field_mdynt_alskn_target_id,
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
$field_username_value = filter_var($obj->field_altk_al_value,
FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_LOW);
try {
$sql = "INSERT INTO user_name(field_username_value) VALUES(:field_username_value)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':field_mdynt_alskn_target_id', $field_mdynt_alskn_target_id, PDO::PARAM_STR);
$stmt->execute();
echo json_encode(array('message' => 'Congratulations the record ' . $name . ' was added to the database'));
}
// Catch any errors in running the prepared statement
catch(PDOException $e)
{
echo $e->getMessage();
}
break;这里的问题是,每个字段在数据库中都有自己的表,例如,username字段有表user_name,对于表单中的所有字段,我要对所有字段执行相同的操作,我认为这不是正确的方法。
是否有一种更快和有效的方法,将数据从我们的离子4应用注册表格到我们的Drupal网站的数据库。
谢谢,以防万一,还需要进一步澄清。
只是为了澄清:
我们安装了"Drupal/admin/people/roles"“多重注册页面模块”,然后使用创建不同的用户,如下所示

然后使用"Drupal/admin/config/people/accounts/fields"为每个角色添加字段,如下图所示


这导致Drupal在数据库中创建每个字段及其表。
发布于 2019-08-24 15:19:33
首先,修复数据库体系结构,为每个表单字段创建一个表并不是高效和可伸缩的。
我怀疑是否有任何Drupal扩展能够做到这一点,如果是这样的话,它应该被踢出drupal宇宙。
从这张图片中可以看到我们为用户提供了多少个表。

发布于 2019-08-25 07:21:40
我将考虑的选项是制作一个页面模板,该模板有一个可剥离的设计,您可以按照最初尝试的方式嵌入该模板。
如果您不知道如何让Drupal为单个页面提供自定义模板,那么我会编写一些JavaScript或CSS来删除/隐藏我在应用程序中嵌入时不想看到的所有页面组件。
您可以添加一个查询字符串参数,或者在窗体上创建第二个页面,以便您可以检测到它何时需要更改设计。
正如您已经发现的,尝试手动执行是一项复杂的任务,除非我已经是该领域的专家,否则我不想承担这个任务。
我不知道你是否考虑过完整的用户体验?用户注册后会发生什么?您将结束一个完整的表单,但应用程序将不知道它已注册,因为这将发生在服务器上。我认为JWT是开始研究的方向,但我没有一个简单的解决方案。
https://stackoverflow.com/questions/57637713
复制相似问题