
本文介绍在 Laravel 项目中,通过修改 Form::text() 的默认值参数,为手机号输入框自动前置添加国家代码“94”,适用于 POS 系统等需统一区号的业务场景。
本文介绍在 laravel 项目中,通过修改 `form::text()` 的默认值参数,为手机号输入框自动前置添加国家代码“94”,适用于 pos 系统等需统一区号的业务场景。
在 Laravel 的 Blade 模板中,使用 Form::text() 生成文本输入框时,第二个参数代表该字段的默认值(value)。原始代码中传入 null,表示输入框初始为空;若希望用户输入前就显示 94(如斯里兰卡国家区号),只需将该参数显式设为字符串 '94' 即可。
✅ 正确写法如下(已优化结构与可维护性):
<div class="col-md-3">
<div class="form-group">
{!! Form::label('mobile', __('contact.mobile') . ':*', ['class' => 'control-label']) !!}
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-mobile"></i>
</span>
{!! Form::text('mobile', '94', [
'class' => 'form-control',
'required' => true,
'placeholder' => __('contact.mobile'),
'id' => 'mobile-input'
]) !!}
</div>
</div>
</div>⚠️ 注意事项:
- 此方案仅设置初始显示值,不阻止用户手动删除或修改 94。如需强制校验(例如确保号码始终以 94 开头),应在后端验证逻辑中补充规则(如 starts_with:94)及前端 JavaScript 实时拦截(推荐使用 input 事件监听 + setSelectionRange 防止光标跳转)。
- 若使用 Laravel Collective HTML 5.x+ 版本,Form::text() 语法保持一致;但注意该扩展包已不再官方维护,新项目建议迁移到原生 Blade 表单或 Livewire/Inertia 方案。
- 国际化支持:__('contact.mobile') 已适配多语言,但硬编码 '94' 属于业务逻辑常量,建议提取至配置文件(如 config/contacts.php)或环境变量,便于后续扩展多国区号。
? 总结:仅需一行修改——将 null 替换为 '94',即可实现区号前置。这是轻量、可靠且符合 Laravel 表单语义的实现方式,特别适合 POS 等需快速落地的业务系统。


















