在Laravel 4中使用Sentry2进行验证

时间:2013-08-27 20:41:38

标签: php laravel laravel-4 eloquent cartalyst-sentry

我想在我的Laravel 4应用程序中使用Sentry2,但我不确定在与它交互之前如何使用它来验证用户提交的数据。在我自己的模型中,我会编写一个$rules数组来包含验证规则,并编写一个静态validates()方法,我可以在控制器中调用它。

但是对于Sentry2,我该怎么做?我是否必须扩展Sentry2提供的用户模型并使用它?或者Sentry是否允许我通过扩展验证规则来添加验证规则?

如果我确实扩展了Sentry2用户模型,我是否可以这样扩展它:

/app/models/User.php

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

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

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

然后我需要创建自己的配置文件,而不是使用Sentry提供的配置文件。我在工匠中做了以下事情:

php artisan config:publish cartalyst\sentry

并像这样更新配置文件:

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

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

这是对的吗?如果是这样,我是否只是调用模型来验证用户提交的数据,就像我通常那样?因此,例如,在UsersController中,我将通过执行以下操作来检查输入:

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

1 个答案:

答案 0 :(得分:1)

我相信你是在正确的道路上。当你保存数据时,Sentry并没有真正做任何验证(除了检查密码和登录字段),如果你想直接在Eloquent模型中使用验证,你可以扩展当前的Cartalyst用户模型,正如您在代码中所做的那样。

在配置文件中,您可能必须考虑帐户中的命名空间。要检查Sentry是否真的在使用您的模型,请尝试获取当前登录的用户(Sentry :: getUser())和var_dump(dd(Sentry :: getUser())以查看Sentry是否真正使用您的类。) / p>

完成设置后,您可以像往常一样使用您的Eloquent模型和验证,并添加所有Sentry方法和属性。

如果您希望将验证逻辑与您的模型分开,您可以查看将验证用作服务:http://culttt.com/2013/07/29/creating-laravel-4-validation-services/