Laravel中如何在下拉选择框显示月份名称与对应数字
解决Laravel选择框显示"01-January"格式月份的问题
嘿,作为Laravel新手碰到这个需求完全正常,我给你几个简单的实现方法,选你觉得顺手的来就行!
方法一:用Laravel自带的Carbon(最优雅)
Carbon是Laravel默认集成的日期处理工具,用它来格式化月份超省心。
首先在你的控制器里生成格式化好的月份数组:
use Carbon\Carbon; // 生成1-12月的格式化数据 $getMonth = collect(range(1, 12))->map(function ($month) { // 'm'是两位数字月份,'F'是完整月份名称 return Carbon::create()->month($month)->format('m-F'); });
然后在视图里直接循环输出就行:
<div class="col-xl-4 col-lg-12 col-md-12"> <fieldset class="form-group"> <label for="placeTextarea">Expiration Month</label> <select class="form-control" id="month" name="month" multiple> <option> Select Month </option> @foreach($getMonth as $month) <option>{{ $month }}</option> @endforeach </select> </fieldset> </div>
方法二:用PHP原生函数(无需依赖Carbon)
如果你不想用Carbon,用PHP原生的str_pad和date函数也能轻松搞定:
控制器代码:
$getMonth = []; for ($i = 1; $i <= 12; $i++) { // 把月份数字补成两位(比如1变成01) $monthNumber = str_pad($i, 2, '0', STR_PAD_LEFT); // 获取完整月份名称 $monthName = date('F', mktime(0, 0, 0, $i, 1)); $getMonth[] = "{$monthNumber}-{$monthName}"; }
视图部分和上面一样,直接循环输出即可。
方法三:直接在视图里格式化(如果$getMonth是原始月份数字)
要是你的$getMonth已经是1-12的数字数组,也可以直接在Blade模板里处理:
<div class="col-xl-4 col-lg-12 col-md-12"> <fieldset class="form-group"> <label for="placeTextarea">Expiration Month</label> <select class="form-control" id="month" name="month" multiple> <option> Select Month </option> @foreach($getMonth as $month) <option>{{ str_pad($month, 2, '0', STR_PAD_LEFT) }}-{{ date('F', mktime(0,0,0,$month,1)) }}</option> @endforeach </select> </fieldset> </div>
这样处理后,你的选择框里就会完美显示01-January、02-February这种格式啦!
内容的提问来源于stack exchange,提问作者user8919122
相关产品推荐
相关产品推荐

