如何在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
相关产品推荐
相关产品推荐

