【问题标题】:How can I loop to get dates of next 10 days from today using carbon in Laravel blade如何使用 Laravel 刀片中的碳循环获取从今天起 10 天的日期
【发布时间】:2021-12-08 19:13:58
【问题描述】:

我一直在尝试在 Laravel blade.php 中创建未来 10 天(以及可选日期)的下拉列表,我能够使用 \carbon\carbon::now(); 获取当前日期,但是当我尝试在其中添加一天时相同的变量它给出一个错误

这是我的代码-

<select class="form-control">
    <?php
     $today = \Carbon\Carbon::now()->format('m-d-Y (l)');
     $iterate = 0;
     for($iterate=0;$iterate<10;$iterate++) {
    ?>
        <option value="{{$today}}">
           {{$today}}
        </option>
    <?php
     $today = $today->addDay(); } //this one isn't working
    ?>
</select>

错误-
[2021-10-22 01:21:32] local.ERROR: Call to a member function addDay() on string (View: /var/www/vhosts/example.com/dummy.example.com/resources/views/superadmin/side_menu_superadmin.blade.php)

我该如何解决, 提前致谢。

【问题讨论】:

    标签: php laravel for-loop laravel-blade


    【解决方案1】:

    您可以使用CarbonPeriod 生成日期范围。试试这个代码

    @php
    $now = Carbon\Carbon::now();
    $startDate = $now->clone()->startOfDay();
    $endDate = $now->clone()->addDays(10)->endOfDay();
    //change 10 to whatever you needed
    $datePeriod =  collect(Carbon\CarbonPeriod::create($startDate, $endDate)->toArray())
                  ->map(function($eachCarbonDate){
                    return $eachCarbonDate->format('m-d-Y (l)');
                  });
    @endphp
    
    <select class="form-control">
      @foreach ($datePeriod as $eachFormattedDate)
          <option value="{{$eachFormattedDate}}">
               {{$eachFormattedDate}}
            </option>
      @endforeach
    </select>
    

    这是phpsandbox的现场演示链接

    【讨论】:

    • 最好将数据从控制器传递到刀片。在刀片中使用 php 标签是不明智的。
    • 你是对的。我理解,但在这种情况下,出于某种原因,我想在弹出窗口中显示该特定下拉菜单,该下拉菜单将显示在每个页面上。每当用户第一次登录并且我不知道任何其他方法时
    • 你可以使用view composer laravel.com/docs/8.x/views#view-composers
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2017-04-28
    • 2019-11-15
    相关资源
    最近更新 更多