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

自定义验证消息失效求助:币种名称唯一性验证异常

币种名称唯一性验证的Laravel API实现方案

嗨,我刚好处理过类似的需求,给你整理了一套完整的实现方案,完全符合你提到的要求:

核心需求回顾

  • 前端通过自定义函数validateNameUniqness调用Laravel API做名称校验
  • 名称不重复时,API返回true,状态码200
  • 名称重复时,API返回具体错误消息,状态码保持200

Laravel后端实现代码

public function validateCurrencyName(Request $request)
{
    // 获取前端传过来的币种名称
    $currencyName = $request->input('name');
    
    // 查询数据库,检查是否存在同名币种
    $isDuplicate = \App\Models\Currency::where('name', $currencyName)->exists();
    
    if (!$isDuplicate) {
        // 名称唯一,返回true
        return response()->json(true, 200);
    }
    
    // 名称重复,返回友好的错误提示
    return response()->json('该币种名称已经存在,请更换其他名称试试', 200);
}

前端调用示例(JavaScript)

这里给你写个简单的异步调用示例,你可以根据自己的前端框架调整:

async function validateNameUniqness(currencyName) {
    try {
        const response = await fetch('/api/currency/check-name', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                // Laravel需要CSRF令牌,记得带上
                'X-CSRF-TOKEN': document.querySelector('meta[name="csrf-token"]').content
            },
            body: JSON.stringify({ name: currencyName })
        });
        
        const result = await response.json();
        
        if (result === true) {
            // 名称可用,执行后续逻辑
            console.log('这个币种名称没问题,可以用');
        } else {
            // 名称重复,提示用户
            alert(result);
        }
    } catch (error) {
        console.error('校验请求出错了:', error);
    }
}

额外优化建议

如果是编辑币种的场景,需要忽略当前编辑的币种本身,避免误判重复,可以修改后端代码,接收一个币种ID参数:

public function validateCurrencyName(Request $request)
{
    $currencyName = $request->input('name');
    $currentCurrencyId = $request->input('id'); // 新增的ID参数
    
    $query = \App\Models\Currency::where('name', $currencyName);
    // 如果有ID,就排除当前币种
    if ($currentCurrencyId) {
        $query->where('id', '!=', $currentCurrencyId);
    }
    
    $isDuplicate = $query->exists();
    
    if (!$isDuplicate) {
        return response()->json(true, 200);
    }
    
    return response()->json('该币种名称已经存在,请更换其他名称试试', 200);
}

别忘了在Laravel的routes/api.php里配置对应的路由:

use App\Http\Controllers\CurrencyController;

Route::post('/currency/check-name', [CurrencyController::class, 'validateCurrencyName']);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:18:47