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

如何在Laravel中用PHP为DocuSign模板填充下拉框选项

在Laravel中实现DocuSign下拉框(List)功能

DocuSign eSign官方SDK里并没有名为Dropdown的类,下拉选择框对应的是**List类**,以下是具体实现步骤和代码示例:

1. 导入正确的类

在你的Laravel控制器或服务类中,导入所需的DocuSign模型类:

use DocuSign\eSign\Model\List;
use DocuSign\eSign\Model\ListItem;
use DocuSign\eSign\Model\Tabs;
// 按需导入其他类,比如EnvelopeDefinition、Signer等

2. 创建下拉框(List)实例

和你创建Text实例的逻辑一致,先初始化List对象,再添加下拉选项:

// 创建下拉选项集合
$listItems = [];
// 添加选项1
$item1 = new ListItem([
    'text' => '选项A',
    'value' => 'option_a'
]);
$listItems[] = $item1;
// 添加选项2
$item2 = new ListItem([
    'text' => '选项B',
    'value' => 'option_b'
]);
$listItems[] = $item2;

// 创建下拉框实例
$dropdown = new List([
    'document_id' => '1', // 对应文档ID
    'page_number' => '1', // 显示页码
    'x_position' => '100', // 控件X坐标
    'y_position' => '200', // 控件Y坐标
    'list_items' => $listItems,
    'tab_label' => 'my_dropdown', // 自定义标签用于识别
    'required' => true, // 是否设为必填项
    'locked' => false // 是否锁定控件
]);

3. 将下拉框添加到信封标签中

把创建好的下拉框整合到Tabs对象,再绑定到签署人:

// 初始化Tabs并添加下拉框
$tabs = new Tabs();
$tabs->setListTabs([$dropdown]);

// 假设已创建签署人实例
$signer = new Signer([
    'email' => 'signer@example.com',
    'name' => '签署人姓名',
    'recipient_id' => '1',
    'tabs' => $tabs
]);

// 后续逻辑:创建EnvelopeDefinition,调用API发送信封...

完整Laravel示例片段

<?php

namespace App\Http\Controllers;

use DocuSign\eSign\Client\ApiClient;
use DocuSign\eSign\Model\EnvelopeDefinition;
use DocuSign\eSign\Model\Signer;
use DocuSign\eSign\Model\Tabs;
use DocuSign\eSign\Model\List;
use DocuSign\eSign\Model\ListItem;
use Illuminate\Http\Request;

class DocuSignController extends Controller
{
    public function sendEnvelopeWithDropdown()
    {
        // 初始化DocuSign API客户端
        $apiClient = new ApiClient();
        $apiClient->setOAuthBasePath('https://account-d.docusign.com'); // 沙箱环境,生产环境替换为正式地址
        $apiClient->setAccessToken(env('DOCUSIGN_ACCESS_TOKEN'));

        // 1. 创建下拉选项
        $listItems = [
            new ListItem(['text' => '选项A', 'value' => 'a']),
            new ListItem(['text' => '选项B', 'value' => 'b']),
            new ListItem(['text' => '选项C', 'value' => 'c'])
        ];

        // 2. 创建下拉框
        $dropdown = new List([
            'document_id' => '1',
            'page_number' => '1',
            'x_position' => '150',
            'y_position' => '300',
            'list_items' => $listItems,
            'tab_label' => 'user_choice',
            'required' => true
        ]);

        // 3. 配置标签和签署人
        $tabs = new Tabs();
        $tabs->setListTabs([$dropdown]);

        $signer = new Signer([
            'email' => 'signer@example.com',
            'name' => '张三',
            'recipient_id' => '1',
            'tabs' => $tabs
        ]);

        // 4. 配置信封定义(需自行补充文档配置)
        $envelopeDefinition = new EnvelopeDefinition([
            'email_subject' => '请签署这份包含下拉框的文档',
            'documents' => [/* 你的文档配置,比如上传的文档ID或字节流 */],
            'recipients' => ['signers' => [$signer]],
            'status' => 'sent' // 直接发送信封
        ]);

        // 5. 调用API发送信封
        $envelopesApi = new \DocuSign\eSign\Api\EnvelopesApi($apiClient);
        $accountId = env('DOCUSIGN_ACCOUNT_ID');
        $envelopeSummary = $envelopesApi->createEnvelope($accountId, $envelopeDefinition);

        return response()->json(['envelope_id' => $envelopeSummary->getEnvelopeId()]);
    }
}

注意事项

  • 确保已通过Laravel的.env文件正确配置DocuSign的API密钥、访问令牌和账号ID。
  • 文档ID、页码、控件坐标等参数需根据你的实际文档调整。
  • 测试时使用沙箱环境API地址,正式上线切换为生产环境地址。

内容的提问来源于stack exchange,提问作者Manish Kumar Pathak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:37