私は、Eloquent モデルなどを使用して Slim と Illuminate Database パッケージを使用して API を構築していますREADME
。ただし、Laravel スイート全体をインストールせずにモデルで検証機能を使用したいのですが、このライブラリの設計に頭を悩ませることはできません。
これについてどうすればいいですか?Laravel に提供されているドキュメントは、Laravel をすぐに使用できることを期待しているようです。
私は、Eloquent モデルなどを使用して Slim と Illuminate Database パッケージを使用して API を構築していますREADME
。ただし、Laravel スイート全体をインストールせずにモデルで検証機能を使用したいのですが、このライブラリの設計に頭を悩ませることはできません。
これについてどうすればいいですか?Laravel に提供されているドキュメントは、Laravel をすぐに使用できることを期待しているようです。
現在のバージョンのソリューションは次のとおりです: Laravel 5.4. composer.json ファイル:
{
"name": "Validation standalone",
"require": {
"php": ">=5.6.4",
"illuminate/validation": "5.4.*",
"illuminate/translation": "5.4.*"
}
}
"illuminate/translation": "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);
}
}
ここでは、検証用に提供されたデータの「本文」フィールドを意図的に省略しているため、検証エラーが表示されます。
これを提案するのは嫌いですが、Laravel バリデーターはおそらくあなたが望むものではありません。Symfony または Zend Framework (2+) のバリデータ クラスを確認することをお勧めします。それらはスタンドアロンのバリデーターとして非常にうまく機能します。実際、Laravel のフォームとバリデーターのクラスはまったく問題がないため、現在、Laravel プロジェクトで ZF2 フォームのクラスとバリデーターを使用しています。
あなたが聞きたかった答えではないかもしれませんが、長期的には苦痛を和らげるかもしれません。