如何在 Laravel 中验证 cron 表达式?

问题描述 投票:0回答:3

有什么方法可以验证用户在 Laravel 中创建的 cron 表达式吗?

php cron
3个回答
4
投票

不是开箱即用,但有一个用 PHP 编写的精彩的 cron 表达式解析器

composer require dragonmantank/cron-expression
安装

然后您需要使用

php artisan make:rule Cron

创建自定义规则

现在只需在

isValidExpression()
方法中调用
passes()
即可。

public function passes($attribute, $value)
{
    return CronExpression::isValidExpression($value);
}

不要忘记留言

public function message()
{
    return 'The :attribute field must be a valid cron expression.';
}

为了使用它,您可以在表单请求中传递规则的实例

public function rules()
{
    return [
        'cron' => [new Cron],
    ];
}

3
投票

在 Laravel 6 中,你不需要任何额外的模块。

最简单的方法是在

AppServiceProvider
类中扩展 Validator 对象:

public function boot() {
    //  ...

    Validator::extend('cron', function ($attribute, $value, $parameters, $validator) {
        return CronExpression::isValidExpression($value);
    });
}

0
投票

这是 Laravel 10 的验证规则:

<?php

namespace App\Rules;

use Closure;
use Cron\CronExpression as Cron;
use Illuminate\Contracts\Validation\ValidationRule;

class CronExpression implements ValidationRule
{
    /**
     * Run the validation rule.
     *
     * @param \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString $fail
     */
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        if (Cron::isValidExpression($value) === false) {
            $fail("The $attribute field is not a valid cron expression.");
        }
    }
}

使用示例:

use App\Rules\CronExpression;

public function rules()
{
    return [
        'cron_expression' => [new CronExpression],
    ];
}
© www.soinside.com 2019 - 2024. All rights reserved.