
本文介绍在 Laravel 项目中,通过修改 Form::text() 的默认值参数,为手机号输入框自动前置国家代码“94”,确保用户输入的号码始终以“94”开头,适用于 POS 系统等需标准化号码格式的场景。
本文介绍在 laravel 项目中,通过修改 `form::text()` 的默认值参数,为手机号输入框自动前置国家代码“94”,确保用户输入的号码始终以“94”开头,适用于 pos 系统等需标准化号码格式的场景。
在 Laravel 的 Blade 模板中,Form::text() 辅助函数用于生成文本输入框,其第二个参数为字段的初始/默认值(而非占位符)。原代码中传入 null,导致输入框为空;若希望所有用户输入的手机号均以“94”开头(例如斯里兰卡国家区号),最直接且可靠的方式是将该默认值设为字符串 '94',而非依赖前端 JavaScript 或后端验证——既保证一致性,又避免用户误删前缀。
修改后的代码如下:
<div class="col-md-3">
<div class="form-group">
{!! Form::label('mobile', __('contact.mobile') . ':*') !!}
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-mobile"></i>
</span>
{!! Form::text('mobile', '94', ['class' => 'form-control', 'required', 'placeholder' => __('contact.mobile')]) !!}
</div>
</div>
</div>
✅ 关键说明:
- '94' 是默认值(value 属性),会真实提交到后端,用户可在其后继续输入(如输入 771234567 后完整值为 94771234567);
- placeholder 仅作提示,不影响实际值,因此无需修改;
- 此方案兼容 Laravel 5.x–10.x 的 laravelcollective/html 扩展包(注意:Laravel 9+ 原生已移除 Form 类,需确认项目已安装并正确配置该扩展)。
⚠️ 注意事项:
- 若业务逻辑要求用户不可编辑“94”前缀(即只允许输入后续数字),则需结合前端限制(如 input 事件监听 + readonly 前缀区域)或使用带隐藏前缀的双字段设计,单纯设置默认值无法阻止用户删除;
- 后端务必做二次校验(如正则 /^94\d{9,12}$/),防止绕过前端篡改;
- 国际化场景下,建议将 '94' 提取为配置项(如 config('app.country_code')),便于多地区部署。
综上,将 Form::text() 的默认值由 null 改为 '94' 是实现前缀自动注入的简洁、高效方案,兼顾开发效率与数据规范性。











