You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WHMCS中为域名保存来自Registrar模块的AdditionalField数据

解决方案

你直接修改$vars变量不生效是因为该变量仅为钩子执行时的入参副本,修改不会同步写入数据库。你可以直接使用WHMCS内置的域名自定义字段操作方法完成值的更新,具体代码如下:

add_hook('AfterRegistrarRegister', 1, function($vars) {
    // 已有的业务逻辑
    $domainId = $vars['domainid'];
    // 此处替换为你调用注册商API返回的真实Request ID
    $realRequestId = '从注册接口响应中提取的RequestId值';

    // 定位到你创建的RequestId附加字段
    $requestIdField = WHMCS\Domain\CustomField::where('fieldname', 'RequestId')->first();
    if ($requestIdField) {
        // 为指定域名写入/更新附加字段值
        $requestIdField->setValueForDomain($domainId, $realRequestId);
    }
});

如果你偏好直接操作数据库,也可以使用WHMCS自带的Capsule ORM实现:

use Illuminate\Database\Capsule\Manager as Capsule;

add_hook('AfterRegistrarRegister', 1, function($vars) {
    $domainId = $vars['domainid'];
    $realRequestId = '从注册接口响应中提取的RequestId值';

    // 查询RequestId字段的ID
    $fieldId = Capsule::table('tblcustomfields')
        ->where('type', 'domain')
        ->where('fieldname', 'RequestId')
        ->value('id');

    if ($fieldId) {
        // 存在则更新,不存在则插入
        Capsule::table('tblcustomfieldsvalues')
            ->updateOrInsert(
                ['relid' => $domainId, 'fieldid' => $fieldId],
                ['value' => $realRequestId]
            );
    }
});

两种方案都可以正常将Request ID和对应域名绑定存储,后续你可以通过对应的读取方法拿到该值用于域名状态查询。

内容的提问来源于stack exchange,提问作者Deepak Kamat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:24:02