Как установить только одно значение NULLABLE из двух полей ввода - PullRequest
0 голосов
/ 07 июня 2019

У меня есть два поля ввода, одно как mobile_no, а другое как электронная почта, я хочу установить условие, что из двух полей, если mobile_no не указан, электронная почта должна быть обязательной, и наоборот.

Как установить условие обнуляемости при проверке ларавеллы, что требуется только одно поле из двух.

1 Ответ

0 голосов
/ 07 июня 2019

Вы можете создать собственное правило.Итак, ваша потребность противоположна правилу required_if, поэтому, пожалуйста, попробуйте это и дайте мне знать.

Сначала создайте пользовательское правило, я называю его NullableIf

php artisan make:rule NullableIf

Затемреализация должна выглядеть примерно так:

class NullableIf implements Rule
{

    private $otherField;

    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct( $otherField )
    {
        $this->otherField = $otherField;
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        if($this->otherField === null) 
        {
            return $value !== null;
        }

        return true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}

Чтобы использовать ее, вы делаете:

$request->validate([
    'field1'                 => [ new NullableIf(request('field2')) ],
    'field2'                 => [ new NullableIf(request('field1')) ]
]);

Я надеюсь, что по крайней мере она даст вам направление, если эта точная реализация не удовлетворяет вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...