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

Laravel客户注册表单:通过配偶ID查询显示配偶姓名方案

Laravel 客户注册配偶信息自动填充实现方案

一、前端交互逻辑实现

修改表单并添加JavaScript,实现婚姻状态切换时的输入框控制,以及CPF输入后的异步查询:

<!-- 保留原有表单结构,在表单末尾添加以下脚本 -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    const estadoCivil = document.getElementById('estadocivil');
    const cpfConjuge = document.getElementById('cpfconjuge');
    const nomeConjuge = document.querySelector('input[name="nomeconjuge"]');

    // 婚姻状态切换时启用/禁用配偶相关输入框
    estadoCivil.addEventListener('change', function() {
        const needSpouse = this.value === 'Casado' || this.value === 'União Estável';
        cpfConjuge.disabled = !needSpouse;
        nomeConjuge.disabled = !needSpouse;
        
        // 非已婚状态清空输入内容
        if (!needSpouse) {
            cpfConjuge.value = '';
            nomeConjuge.value = '';
        }
    });

    // 输入配偶CPF后自动查询姓名
    cpfConjuge.addEventListener('blur', function() {
        const cpf = this.value.trim();
        if (!cpf || this.disabled) return;

        fetch(`/clientes/buscar-conjuge/${cpf}`)
            .then(res => res.json())
            .then(data => {
                nomeConjuge.value = data.success ? data.nome : '';
                if (!data.success) alert('未找到该CPF对应的客户信息');
            })
            .catch(err => {
                console.error('查询失败:', err);
                alert('查询过程中出现错误');
            });
    });
});
</script>

二、后端查询接口开发

1. 添加路由

在routes/web.php中新增查询路由:

use App\Http\Controllers\ClienteController;

Route::get('/clientes/buscar-conjuge/{cpf}', [ClienteController::class, 'buscarConjuge'])->name('clientes.buscar-conjuge');

2. 控制器方法实现

在ClienteController中编写查询逻辑:

public function buscarConjuge($cpf)
{
    // 假设客户表为clientes,CPF字段为cpf,姓名字段为nome
    $conjuge = \App\Models\Cliente::where('cpf', $cpf)->first();

    if ($conjuge) {
        return response()->json([
            'success' => true,
            'nome' => $conjuge->nome
        ]);
    }

    return response()->json(['success' => false], 404);
}

三、表单提交验证增强

在客户注册的存储方法中,添加婚姻状态对应的验证规则:

public function store(Request $request)
{
    $validationRules = [
        // 其他字段验证规则...
        'estadocivil' => 'required|in:Solteiro,Casado,Divorciado,União Estável',
        'email' => 'required|email|unique:clientes'
    ];

    // 已婚/稳定同居时强制验证配偶信息
    if (in_array($request->estadocivil, ['Casado', 'União Estável'])) {
        $validationRules['conjugecpf'] = 'required|cpf'; // 需自定义或使用第三方CPF验证规则
        $validationRules['nomeconjuge'] = 'required|string|max:255';
    }

    $validatedData = $request->validate($validationRules);

    // 执行客户数据存储
    \App\Models\Cliente::create($validatedData);

    return redirect()->route('clientes.index')->with('success', '客户注册成功');
}

可选优化点

  • 给配偶CPF输入框添加掩码函数,复用你现有的mascaracnh逻辑即可
  • 将blur事件改为带防抖的input事件,实现实时查询但控制请求频率
  • 替换alert提示为页面内的友好提示元素,提升UI体验

内容的提问来源于stack exchange,提问作者Matheus Sampaio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:54:54