Laravel использовать required_if в объекте пользовательского правила - PullRequest
0 голосов
/ 17 октября 2019

У меня есть следующее правило, чтобы установить обязательное текстовое поле, только если онлайн установлено на 1.

'required_if:online,1'

Теперь мне интересно, возможно ли использовать это поведение, используя объект пользовательского правила, см. : https://laravel.com/docs/6.x/validation#using-rule-objects

В объекте правила доступны следующие 2 атрибута: Атрибут и Значение

public function passes($attribute, $value)
{
    //
}

Можно ли проверитьдругие поля, которые включены в текущий запрос с использованием этого метода?

1 Ответ

1 голос
/ 17 октября 2019

Возможное решение для этого - расширить свой конструктор пользовательских правил и передать $request в качестве параметра.

CustomRule

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;
use Illuminate\Http\Request;

class CustomRule implements Rule
{
    protected $request;

    public function __construct(Request $request)
    {
        $this->request = $request;
    }

    public function passes($attribute, $value)
    {
        return ...;
    }

    ...
}

YourController

$request->validate([
    'input1' => ['required', 'string', new CustomRule($request)],
    'input2' => ['required', 'string'],
]);

Это также обсуждалось как проблема Разрешить настраиваемым правилам проверки доступа ко всем параметрам в laravel/framework

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