Laravel Validator Boolean

Vano

Новичок
Как работает Boolean валидатор? Почему-то он мне постоянно отдаёт ошибку:
Код:
The active field must be true or false.
. Я блин перед валидацией вообще жестко назначил true и вся равно ошибка
 

Adelf

Administrator
Команда форума
Я тебе сейчас умный вещь подскажу, а ты попробуй вникнуть. Найди этот валидатор в коде(через поиск по проекту. в папке vendor там найдется оно). Посмотри как он работает. Выясни причину. И сам все легко поймешь.
 

Vano

Новичок
Пробую... Но еееесли это займет много вреееемени)
 

fixxxer

К.О.
Партнер клуба
Если ты пользуешься нормальной ide, это займет 1 секунду поиска по имени класса.
А если не пользуешься, то это зря
 

Vano

Новичок
PHP:
protected function validateBoolean($attribute, $value)
    {
        if (! $this->hasAttribute($attribute)) {
            return true;
        }
        $acceptable = [true, false, 0, 1, '0', '1'];
        return is_null($value) || in_array($value, $acceptable, true);
    }
Ключевая строка здесь:
PHP:
return is_null($value) || in_array($value, $acceptable, true);
Ну вот я потестил эту строку... true, 0, 1, '0', '1' возвращают true, но false возвращает false.... Бодяга какаято....
 
Последнее редактирование:

Vano

Новичок
Если ты пользуешься нормальной ide, это займет 1 секунду поиска по имени класса.
А если не пользуешься, то это зря
откуда мне знать имя класса? Там куча классов с именем Validator, и как мне было знать что это не класс будет, а метод validateBoolean
 

Vano

Новичок
Ну вот я потестил эту строку... true, 0, 1, '0', '1' возвращают true, но false возвращает false.... Бодяга какаято....
Хмм теперь норм возвращает true. Мб поспешил... неправильно задал.
 

Vano

Новичок
Ладно. Пора открыть тайну... Я все таки грешу и пользуюсь так называемым "sanitize"'ом. Я знаю что это бред, не спрашивайте почему)
PHP:
    /**
     * @return array
     */
    public function rules()
    {
        $this->sanitize();

        return [
            'active' => 'boolean'
        ];
    }

    /**
     * @return void
     */
    public function sanitize()
    {
        $input = $this->all();

        $input['active'] = true;

        $this->replace($input);
    }
Я догадываюсь, что валидация делается на ориджинал риквест, но не могу этого доказать. (или опровергнуть и перейти к поискам других причин).
Пожалуйста помогите - почему при валидации ошибка?)

input('active') это с чекбокса приходит "yes" или не приходит вообще.
 
Сверху