Laravel 5.6: передать другое значение поля формы в проверку другого поля - PullRequest
0 голосов
/ 05 апреля 2019

Я пишу пользовательское правило проверки. В своей форме я проверяю поля, используя правила с группой проверки под названием «my-event». Одно из моих правил заключается в том, что если флажок отмечен как «прочее», то необходимо заполнить текстовое поле «прочее».

Мой запрос проверяется по следующим правилам:

EventRequest.php

 public function rules()
    {
        return [
            'my-event.event-types' => 'required'
            'my-event.event-type-other' => [
                'string', new CheckboxIsValid($checkboxArray)
            ],
        ];
    }

CheckboxIsValid - это вспомогательный класс, который я написал, который реализует правило Laravel:

class CheckboxIsValid implements Rule
{

    public $checkboxArray;

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

    public function passes($attribute, $value)
    {
        if(in_array('other', $this->checkboxArray)) {
            if($value) {
                return true;
            }
        }
        return false;
    }

}

Это проверяет, есть ли «другие» в моем массиве отмеченных флажков. Я хотел бы передать значение my-event.event-types. Как мне это сделать?

1 Ответ

0 голосов
/ 10 апреля 2019

EventRequest.php расширяет FormRequest, который расширяет Request, что даст доступ к другим значениям полей формы:

$this->validationData()

Я получил доступ к этому в EventRequest.php примерно так:

// Instantiate it in case form is submitted without any event types

$eventTypes = [];

if(isset($this->validationData()['my-event']['event-types'])){
            $eventTypes = $this->validationData()['my-event']['event-types'];
        }

И тогда это можно передать в мое правило:

 'my-event.event-types-other' => [
            new CheckboxIsValid($teachingMethods, 'other')
        ],

А в конструкторе CheckboxIsValid:

public $checkboxArray;
public $field;

public function __construct($checkboxArray, $field)
{
    $this->checkboxArray = $checkboxArray;
    $this->field = $field;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...