0

Laravel 4 アプリケーションで Sentry2 を使用したいのですが、それを使用してユーザーが送信したデータを操作する前に検証する方法がわかりません。私自身のモデルで$rulesは、検証ルールを含む配列を作成validates()し、コントローラーで呼び出すことができる静的メソッドを作成します。

しかし、Sentry2 では、これを行うにはどうすればよいでしょうか? Sentry2 が提供する User モデルを拡張して、代わりにそれを使用する必要がありますか? または、Sentry を拡張して検証ルールを追加できるようにする方法はありますか?

Sentry2 User モデルを拡張する場合、次のように拡張しますか?

/app/models/User.php

class User extends \Cartalyst\Sentry\Users\Eloquent\User {

    private static $rules = array(...);

    public static validates($input, static::$rules) {...};
}

次に、Sentry が提供するものを使用する代わりに、独自の構成ファイルを作成する必要があります。私はartisanで次のことを行います:

php artisan config:publish cartalyst\sentry

次のように構成ファイルを更新します。

/app/config/packages/cartalyst/sentry/config.php

'users' => array()
    'model' => 'User',
;

これは正しいです?その場合、通常どおりモデルを呼び出して、ユーザーが送信したデータを検証するだけですか? たとえば、UsersController では、次のようにして入力をチェックします。

$validator = User::validate(Input::all());
4

1 に答える 1

1

私はあなたが正しい道を進んでいると信じています。Sentry は、データを保存するときに実際には検証を行いません (パスワードとログイン フィールドのチェックを除く)。Eloquent モデル内から直接検証を使用する場合は、現在の Cartalyst ユーザー モデルを拡張できます。コードで行ったのとまったく同じです。

構成ファイルでは、名前空間を考慮する必要がある場合があります。Sentry が実際にモデルを使用していることを確認するには、現在ログインしているユーザーを取得し (Sentry::getUser())、それを var_dump してみてください (dd(Sentry::getUser()) を使用して、Sentry が実際にあなたのクラスを使用していることを確認します)。

セットアップが完了したら、Sentry のすべてのメソッドとプロパティを追加して、Eloquent モデルと検証を通常どおりに使用できます。

検証ロジックをモデルから分離したい場合は、検証をサービスとして使用する方法をご覧ください: http://culttt.com/2013/07/29/creating-laravel-4-validation-services/

于 2013-11-27T21:40:49.627 に答える