Laravel selectRange / selectMonth 2位数

时间:2014-11-15 14:04:44

标签: php forms laravel

好的,我有一个带有selectRange / selectMonth输入的laravel表单,但我怎么能这样做所以它们都是2位数?

所以,对于我从1-31开始的第一个selectRange,所有的一位数字都是:01,02,03,04等。

而我的月份将是相同的,但是1-12号码。

{{ Form::label('day', 'What\'s your date of birth?') }}
{{ Form::selectRange('day', 01, 31, null, array('class' => 'date')) }}
{{ Form::selectMonth('month', null, array('class' => 'month')) }}
{{ Form::selectRange('year', 2014, 1880, null, array('class' => 'year')) }}

3 个答案:

答案 0 :(得分:0)

Form::selectRange不支持前导零。因此,您必须自己构建选项并使用普通Form::select(如void main的答案所说) 最佳做法是编写带有前导零的可重用范围函数。

public function selectRangeLeadingZeros($name, $begin, $end, $selected = null, $options = array()){
    $range = array_combine($range = range($begin, $end), $range);
    foreach($range as &$value){
        $value = str_pad($value, 2, "0", STR_PAD_LEFT);
    }
    return Form::select($name, $range, $selected, $options);
}

这基本上是selectRange方法的内容,添加了foreach循环以将前导零置于其中。

您可以将其放在自定义帮助程序类/文件或extend the Laravel form class

您可以像使用selectRange

一样使用它

答案 1 :(得分:0)

我建议您在这种情况下使用Form::select代替Form::selectRange。例如:

天数:

$days = [];
for($i = 1; $i <= 31; $i++){
    $val = ($i < 10) ? '0'.$i : $i;
    $days[$val] = $val;
}
Form::select('day', $days, '01');

几个月:

$months = [
    '01' => 'January',
    '02' => 'February',
    '03' => 'March',
    '04' => 'April',
    '05' => 'May',
    '06' => 'June',
    '07' => 'July',
    '08' => 'August',
    '09' => 'September',
    '10' => 'October',
    '11' => 'November',
    '12' => 'December'
];

Form::select('month', $months, '01');

答案 2 :(得分:0)

Laravel 5 - Laravel Collective HTML

月份和年份实际上很简单:

{!! Form::selectMonth('month', null, ['class'=>'month']) !!}
{!! Form::selectYear('year', date('Y'), date('Y')-100, null, ['class'=>'year']) !!}

至于Day,我会做类似@ mehedi-pstu-2K9的答案。

您还可以轻松添加格式。对于月份,只需将format string作为第四个参数传递。假设您正在获取信用卡信息并希望它为0-padded:

{!! Form::selectMonth('month', null, ['class'=>'month'], '%m') !!}

至于Year,我们已经传递了一个格式字符串。只需将date('Y')的两个实例更改为date('y')(更低的y),它就会是两位数。