Laravel不会从/ app / models加载子文件夹

时间:2014-10-29 23:11:44

标签: php laravel

我试图在我的应用中正确安排事情,所以我创建了一个名为"验证器"在我的" / app / models"目录,以保持我的自定义验证规则。我预计它会自动加载,但事实并非如此。这是验证器的代码:

class AuthValidator extends \Illuminate\Validation\Validator
{

    public function validateActive($input, $value, $parameters)
    {
        if ( $input === "email" )
        {
            return User::where("email", $value)->first()->confirmed();
        } else
        {
            return true;
        }
    }

}

Validator::resolver(function($translator, $data, $rules, $messages)
{
    $messages['active'] = "You need to confirm your email first";

    return new AuthValidator($translator, $data, $rules, $messages);
});

它工作正常,如果我把它放在/app/models/User.php文件中,所以问题不在类定义中。

我试图制作一个分开的" / app / validators"目录并将其放入composer.json和/app/start/global.php文件中进行自动加载。仍然没有加载,即使我做了" artisan dump-autoload"和#34;作曲家dump-autoload"两者。

每当我尝试使用自定义规则"活动"时,Laravel说"方法[validateActive]不存在。"。

我也试着写" echo' 123&#39 ;;出口;"在我的文件的开头,它没有工作,所以文件显然没有加载。

它特别奇怪,因为其他自定义模型已加载。

UPD:我使用标准文件结构,现在不编辑composer.json。

1 个答案:

答案 0 :(得分:0)

您是否添加了命名空间?

这对我有用:

应用程序/模型/验证/ AuthValidator.php:     

plot(X,Y,'.')

在控制器中:

namespace app\models\validators;

class AuthValidator
{
    function test()
    {
        dd("message from AuthValidator");
    }
}

它自动加载,我没有必要在composer.json中添加它