Laravel пользовательское правило required_if и required_without - PullRequest
0 голосов
/ 12 февраля 2020

есть возможность создать правило для проверки входного массива, например:

'agent_id.*' =>'nullable|required_with:commission.*|required_with:remuneration.*|integer|exists:agents,id',
'commission.*' => ['nullable', 'regex:/^\d+(\.\d{1,2})?$/i', new DocumentFTVDetailCommissionOrRemunerationRule()],
'remuneration.*' => ['nullable', 'regex:/^\d+(\.\d{1,2})?$/i', new DocumentFTVDetailRemunerationOrCommissionRule()],

-agent_id. * Требуется с комиссией. * Или вознаграждением. *

-комиссия . * требуется, если есть agent_id. * и вознаграждение. * empy или не задано

-вознаграждение. * требуется, если есть agent_id. * и комиссия. * empy или не установлено

DocumentFTVDetailCommissionOrRemunerationRule () и DocumentFTVDetailRemunerationOrCommissionRule () - это правила, ограничивающие выбор между комиссией. * Или вознаграждением. *

Спасибо

1 Ответ

0 голосов
/ 12 февраля 2020

Этого можно добиться, создав Настраиваемое правило проверки

Начните с создания класса правила:

php artisan make:rule DocumentFTVDetailCommissionOrRemunerationRule
php artisan make:rule DocumentFTVDetailRemunerationOrCommissionRule

Затем измените эти классы, чтобы применить логи c, как показано в документации - например, вот пример правила проверки пароля, которое я создал для своей собственной системы:

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Password implements Rule
{
    /**
     * @var string
     */
    const PATTERN = '/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@#$!%*?&])[A-Za-z\d@#$!%*?&]{8,30}$/';

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value): bool
    {
        return preg_match(self::PATTERN, $value) === 1;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message(): string
    {
        return 'Invalid password format';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...