Осветите Валидатор в автономном применении без Laravel

Я создаю API с использованием Slim и пакета Illuminate Database с моделями Eloquent и т. Д. Я создал экземпляр обработчика базы данных с помощью Capsule, как показано на README, Однако теперь я хочу использовать функции проверки на своих моделях без установки полного пакета Laravel, но я не могу полностью обдумать дизайн этой библиотеки.

Как бы я пошел по этому поводу? Кажется, что документация, предоставленная для Laravel, в значительной степени ожидает, что вы используете Laravel из коробки.

1

Решение

Вот решение для текущей версии: Laravel 5.4.
Файл composer.json:

{
"name": "Validation standalone",
"require": {
"php": ">=5.6.4",
"illuminate/validation": "5.4.*",
"illuminate/translation": "5.4.*"}
}

Обратите внимание, что мы также должны потребовать «подсветить / перевод»: «5.4. *». И тогда в вашем файле php:

use Illuminate\Validation;
use Illuminate\Filesystem;
use Illuminate\Translation;

include 'vendor/autoload.php';

$filesystem = new Filesystem\Filesystem();
$fileLoader = new Translation\FileLoader($filesystem, '');
$translator = new Translation\Translator($fileLoader, 'en_US');
$factory = new Validation\Factory($translator);

$messages = [
'required' => 'The :attribute field is required.',
];

$dataToValidate = ['title' => 'Some title'];
$rules = [
'title' => 'required',
'body' => 'required'
];

$validator = $factory->make($dataToValidate, $rules, $messages);

if($validator->fails()){
$errors = $validator->errors();
foreach($errors->all() as $message){
var_dump($message);
}
}

Здесь я намеренно пропустил поле «тело» в данных, предоставленных для проверки, так что отображается ошибка проверки.

4

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

Я не хочу предлагать это, но валидатор Laravel, вероятно, не то, что вы хотите. Я предлагаю взглянуть на классы валидаторов в Symfony или Zend Framework (2+). Они работают достаточно хорошо как автономные валидаторы, и на самом деле я использую классы форм ZF2 и валидатор в проекте Laravel в настоящее время, потому что классы форм и валидаторов Laravel просто не на пустом месте.

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

1

Мне просто интересно то же самое, и вот я год спустя нахожу, что ответ Делатбейбл серьезно не нужен. Я нашел следующую Gist, где у spekkionu довольно простая настройка, чтобы вы могли начать. (Работает на моей машине ??; P) Показывает, как сделать переводчик для фабрики и т. Д., И т. Д. Все это включается при импорте illuminate/validation с композитором.

Надеюсь, поможет:
https://gist.github.com/spekkionu/e9103993138e666f9f63

Лучший,

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