2015-02-18 3 views
0

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

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

+0

Используя композитор, добавляющий 'подсветка/валидация' в соответствии с вашими требованиями, загрузит необходимые зависимости, готовые для использования в вашем приложении без laravel. –

+0

Да, но я не понимаю, как использовать этот пакет. В пакете есть класс 'Factory' и' Validator', требующие 'TranslatorInterface' в качестве параметра для своих конструкторов. Что я могу пройти? – Viktor

ответ

1

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

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

+0

Полностью согласен с этим. Я имел большой опыт работы с ZF1 валидаторами и элементами формы (и немного с ZF2), и он находится в другой лиге в Laravel. Интерфейс Laravel и формы/валидаторы кажутся запоздалой мыслью. – dKen

0

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

Надеется, что это помогает: https://gist.github.com/spekkionu/e9103993138e666f9f63

Беста,

2

Вот решение для текущей версии: 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); 
    } 
} 

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