darkghosthunter / laradate
将日期绑定到一个Carbon(或任何您想要的)对象
Requires
- php: ^8.0
- ext-json: *
- illuminate/http: ^8.0
- illuminate/routing: ^8.0
- illuminate/support: ^8.0
- nesbot/carbon: >=2.51.1
Requires (Dev)
- mockery/mockery: ^1.4.3
- orchestra/testbench: ^6.19
- phpunit/phpunit: ^9.5.8
This package is auto-updated.
Last update: 2022-04-29 01:20:57 UTC
README
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:00
或 3 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)。有关更多信息,请参阅 许可证文件。