此包已被弃用且不再维护。未建议替代包。

将日期绑定到一个Carbon(或任何您想要的)对象

v2.0.1 2021-09-12 00:23 UTC

This package is auto-updated.

Last update: 2022-04-29 01:20:57 UTC


README

Aron Visuals - Unsplash (UL) #BXOXnQ26B7o

Latest Stable Version License Coverage Status Laravel Octane Compatible Laravel Jetstream Compatible

Laradate

从URL解析日期,在控制器中接收它作为 Carbon 实例。

要求

  • Laravel 8.x 或更高版本
  • PHP 8.0 或更高版本。

对于旧版本的支持,考虑通过赞助或捐赠来帮助。

安装

您可以通过composer安装此包

composer require darkghosthunter/laradate

使用方法

只需将 date 参数设置到任何路由中。在控制器中,如果变量的名称是 $date,您将得到一个 Carbon 实例。

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Carbon;

Route::get('matches/{date}', function (Carbon $date) {
    return $date;
});

为了到达路由,日期必须格式化为 YYYY-MM-DD,否则将无法找到。

在幕后,Laradate 将使用 DateFactory,这是您应用程序中的默认工厂,来创建 DateTimeInterface 的实例。默认情况下,您的应用程序使用Carbon库。

如果日期无法解析,路由将返回HTTP 404。

使用格式

您也可以使用 {date:format} 对您的路由使用自定义格式。格式遵循相同的 Datetime formats。如果字符串不遵循此格式,则路由将返回HTTP 404。

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Carbon;

// birthdays/2015_07_04
Route::get('birthdays/{date:Y_m_d}', function (Carbon $date) {
    return $date;
});

由于Laravel路由参数绑定限制,使用格式时请使用下划线 _ 作为分隔符。

日期之间中间件

为了避免在控制器内部回退到Laravel Validator,您可以使用接受最小值、最大值或两者日期进行比较(包含)的 date 中间件。如果日期不在这两个日期之间,将返回HTTP 404代码。

由于日期传递给 DateTime,您可以使用像 today 00:003 months 23:59:59 这样的词来表示相对日期。

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::post('birthdays/{date}', function (Request $request, Carbon $date) {
    // ...
})->middleware('date:today 00:00,3 months 23:59:59');

安全性

如果您发现任何安全相关的问题,请通过电子邮件 darkghosthunter@gmail.com 联系,而不是使用问题跟踪器。

许可证

MIT许可证(MIT)。有关更多信息,请参阅 许可证文件