【问题标题】:Laravel with Confide - Custom validator not working?Laravel with Confide - 自定义验证器不起作用?
【发布时间】:2014-12-30 11:01:59
【问题描述】:

LaravelZizaco/confide 包的文档在解释如何使用自定义验证器时描述性不是很强。我希望能够在我的注册过程中验证名字、姓氏、地址、城市、州等字段,但是除了修改供应商包之外,我没有找到任何可行的方法。根据文档,我应该可以把它放在app/models/AccountValidator.php

<?php
use Zizaco\Confide\UserValidatorInterface;
use Zizaco\Confide\ConfideUserInterface;

class AccountValidator implements UserValidatorInterface {

    public function validate(ConfideUserInterface $user) {

        unset($user->password_confirmation); // Because this column doesn't really exists.

        Log::info("Using a custom validator!");

        return true;
    }
}

app/start/global.php

App::bind('confide.user_validator', 'AccountValidator');

我尝试将我的规则放入验证函数以及它之外,但没有成功,它不会验证任何内容,而是尝试将空值插入数据库。如here 所述,我也尝试过composer dump-autoload。我找到了this StackOverflow question,但唯一的答案似乎不是“官方”解决方案,Zizaco 没有在 Github 上回复this question(是的,我也尝试过该代码),所以我不确定是什么其他尝试。

有什么建议吗?

【问题讨论】:

  • 嗯...看起来你做对了。您是否在模型中添加了implements ConfideUserInterface 并在类声明中添加了use ConfideUser
  • 是的,这始终是我做的第一件事。它验证用户名、电子邮件和密码字段 - 没有任何额外内容。但是我确实注意到有two separate rulesets in the vendor package。我是否也应该在自定义验证器中传递该多维数组?
  • 看起来您确实需要将$rules 作为多维数组传递。查看 UserValidator.php 的第 163 行。我检查了我的UserValidator,我的设置为多维的。
  • 我想我明白了,我一开始只是通过规则而不是验证它们。我设置了验证功能来实际验证数据,现在一切似乎都工作正常。文档不清楚,我以为您只需将规则传递给包,它就会自动处理数据。猜不着..
  • 我的UserValidator 中没有validate 方法,只有$rules 参数(作为多维数组),仅供参考。

标签: php validation laravel


【解决方案1】:

这就是我的做法:

<?php

use Zizaco\Confide\UserValidator as ConfideUserValidator;
use Zizaco\Confide\UserValidatorInterface;

class UserValidator extends ConfideUserValidator implements UserValidatorInterface
{
    public $rules = [
        'create' => [
            'username' => 'required',
            'email'    => 'required|email',
            'password' => 'required|min:4',
        ],
        'update' => [
            'username' => 'required',
            'email'    => 'required|email',
            'password' => 'required|min:4',
        ]
    ];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2013-07-09
    • 2019-06-21
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多