2014-10-01 83 views
1

我需要帮助构建我的laravel自定义宏。在我开始/ global.php我需要macros.phpLaravel创建自定义窗体宏选择年份和月份

... 
require app_path().'/macros.php'; 

和我macros.php我有这样的代码,我在这个site阅读。

Form::macro('selectMonths', function() 
{ 
    $selectMonth = preg_replace('/></', '><option value="">Month</option><', Form::selectMonth('month')); 

    return $selectMonth; 
}); 

并且结果是这样的。

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

我该如何在一月之前添加本月而不是在每月之后?

谢谢!

+0

论这正好与一个不同的解决方案:http://stackoverflow.com/questions/25836731/laravel-4-formselectmonth- prepend-month – 2014-10-01 10:42:53

回答

0

尝试使用这种模式:

/name="month">/ 

代码:

$selectMonth = preg_replace('/name="month">/', 'name="month"><option value="">Month</option>', Form::selectMonth('month')); 

这只应该在列表的最上方插入。

0

试试这个代码:

Form::macro('selectMonths', function($name, $selected = null, $options = array()) 
{ 
    $selectMonth = preg_replace('/></', '><option value="">Month</option><', Form::selectMonth($name, $selected, $options), 1); 

    return $selectMonth; 
}); 

Form::macro('selectYears', function($name, $begin, $end, $selected = null, $options = array()) 
{ 
    $selectYear = preg_replace('/></', '><option value="">Year</option><', Form::selectYear($name, $begin, $end, $selected, $options), 1); 

    return $selectYear; 
}); 
0

你只是想获得年份列表?如果是这样,你不需要一个自定义的宏。 Laravel有你覆盖:

{{ Form::selectYear('year', 2013, 2015) }} 

,对于月份:

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

不需要年份和月份的占位符,如选择月份或选择年份或公正年份或月份,其值=“” – yaeykay 2014-10-02 17:04:35