3

Illuminate/Database パッケージは composer を介してスタンドアロンで利用できるようになっているため、フレームワークの外で Laravel'4 Eloquent を使用しようとしています。

Eloquent 自体は正常に動作していますが、検証ルールを実装しようとするとブロックされます。

最初に Ardent のようなビルド済みのライブラリを試し、次に独自のコードを試しましたが、結果は同じで、次の致命的なエラーが発生しました。

致命的なエラー: 177 行目の vendor\illuminate\support\Illuminate\Support\Facades\Facade.php の非オブジェクトに対するメンバー関数 make() の呼び出し

Validator::make(); を呼び出すと、常に問題が発生します。

$validator = Validator::make(
    $this->attributes,
    array('name' => 'required')
);

デバッグを見るとstatic::resolveFacadeInstance('validator');、それが呼び出されているように見えますが、単に返されnullます。

ファサードがどのように機能するのかよくわかりません。誰かが私を正しい方向に向けることができますか? ありがとうございました!

これは私のcomposer.jsonです:

{
    "require": {
        "illuminate/database": "~4.0",
        "illuminate/validation" : "~4.0",
        "laravelbook/ardent": "dev-master"
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "dev"
}
4

2 に答える 2

4

私が取り組んでいるプロジェクトで動作しています。残念ながら、フレームワーク外での使用方法に関するドキュメントは存在しません。フレームワークの外でEloquentを使用する方法に関するドキュメントは少なくとも存在しますが、危険です。

まず、それを composer.json に入れます。

"illuminate/validation": "4.1.*",

検証オブジェクトはファクトリ オブジェクトによって作成されます。このファクトリ オブジェクトは、ファサードがマップし直すものです。したがって、ファサードを使用する代わりに、そのオブジェクトを次のように取得します。

$factory = new \Illuminate\Validation\Factory(new \Symfony\Component\Translation\Translator('en'));

その後make、検証オブジェクトを次のようにできます。

$validator = $factory->make($inputArray, $rulesArray);

これまでに見つけたフレームワークの外でこれを使用するには、いくつかの注意事項があります。

1 つ目は、データベースにクエリを実行する方法がないため、データベースに依存する検証が失敗することです。Illuminate\Validation\DatabasePresenceVerifierこれは、検証オブジェクトに、 Eloquent のセットアップ時に作成したオブジェクトから取得できるデータベース マネージャーをラップするオブジェクトを与えることで解決されます。

$validator->setPresenceVerifier(new \Illuminate\Validation\DatabasePresenceVerifier($capsule->getDatabaseManager());

もう 1 つは、デフォルトの検証メッセージが設定されていないことです。これまでのところ、関数の 3 番目の引数を使用してmakeフィールドごとのカスタム ルールを指定するだけで、これを処理してきました。

于 2015-04-08T16:54:02.277 に答える