Laravel 4 Form::selectMonth prepend month

巧了我就是萌 提交于 2019-12-20 07:27:09

问题


How can I prepend an option into laravel

{{ Form::selectMonth('month') }}

Result

<select name="month">
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>

I want to prepend an option value=0 like this

<select class="form-control" name="month">
    <option value="0">Month</option>
    <option value="1">January</option>
    <option value="2">February</option>
    <option value="3">March</option>
    <option value="4">April</option>
    <option value="5">May</option>
    <option value="6">June</option>
    <option value="7">July</option>
    <option value="8">August</option>
    <option value="9">September</option>
    <option value="10">October</option>
    <option value="11">November</option>
    <option value="12">December</option>
</select>

And set the default or selected to the Month placeholder.


回答1:


You can't, so you'll have to create your own array:

$months = array(0 => 'Month');

foreach (range(1, 12) as $month)
{
    $months[$month] = strftime($format, mktime(0, 0, 0, $month, 1));
}

pass it to your views:

return View::make('viewname')->with('months', $months);

and use Form::select():

 {{ Form::select('month', $months) }}

As a form macro it could be:

Form::macro('selectMonthWithDefault', function($name, $options = array(), $format = '%B')
{
    $months = array(0 => 'Month');

    foreach (range(1, 12) as $month)
    {
        $months[$month] = strftime($format, mktime(0, 0, 0, $month, 1));
    }

    return Form::select($name, $months);
});

And don't forget you can also extend the FormBuilder class and create a new Form::selectMonth().




回答2:


create new file inside app/macros.php and copy paster this line of codes

Form::macro('selectMonths', function($name, $options = array(), $format = '%B')
{
    $months = array(0 => 'Month');

    foreach (range(1, 12) as $month)
    {
        $months[$month] = strftime($format, mktime(0, 0, 0, $month, 1));
    }

    return Form::select($name, $months, null, $options);
});

require macros.php in app/start/global.php



来源:https://stackoverflow.com/questions/25836731/laravel-4-formselectmonth-prepend-month

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!