我想在我的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());
答案 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/