Как вы вводите Valitron с помощью Pimple и повторно используете

Поэтому я использовал библиотеку Valitron для проверки опубликованных форм, и столкнулся с некоторыми проблемами.

Конструктор принимает данные для проверки, и это вызывает проблемы, когда вы внедряете библиотеку как зависимость с Pimple или каким-либо другим контейнером.
Это также вызывает проблемы, если вы хотите проверить несколько вещей, так как вам в основном приходится создавать экземпляры библиотеки каждый раз, когда вы хотите ее использовать.

Есть ли способ обойти это?

В конечном итоге я хотел бы иметь возможность определить библиотеку как службу и внедрить ее с помощью Pimple следующим образом:

$container['Valitron'] = function(){
return new \Valitron\Validator();
};

Любой контроллер / класс, которому нужно что-то проверить, инициализирует это в своем конструкторе следующим образом:

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

Каждый раз, когда мне нужно подтвердить что-то, я могу сказать что-то вроде:

// First use
$this->valitron->setData($_POST);
$this->valitron->rule('required', 'name')->message('Im required')->label('Name');
$this->valitron->validate();

// Second use
$this->valitron->setData($_GET);
$this->valitron->rule('required', 'test')->message('Im also required')->label('Test');
$this->valitron->validate();

Но, похоже, нет функции setData или какого-либо способа сброса библиотеки между использованиями.

Вопрос:
Как я могу использовать Valitron с Pimple и использовать его для проверки нескольких вещей одновременно?

Пожалуйста, обратите внимание: он должен быть введен. Его также не нужно инициализировать перед каждым использованием. Пожалуйста, не говорите мне, что я должен расширить библиотеку или взломать ее, чтобы она работала правильно!

0

Решение

Столкнулся с вашим вопросом, когда я искал то же самое, что и вы, но я также столкнулся со следующей проблемой Github в репозитории Valitron, см. https://github.com/vlucas/valitron/issues/108

vlucas пишет: Valitron в настоящее время разрабатывается как одноразовый экземпляр, поэтому он может привести к странным вещам, таким как пользовательские метки и сообщения об ошибках, которые не будут сбрасываться между валидациями (потому что он никогда не предназначался для такого использования).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]