我试图在我的应用中正确安排事情,所以我创建了一个名为"验证器"在我的" / 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。
答案 0 :(得分:0)
您是否添加了命名空间?
这对我有用:
应用程序/模型/验证/ AuthValidator.php:
plot(X,Y,'.')
在控制器中:
namespace app\models\validators;
class AuthValidator
{
function test()
{
dd("message from AuthValidator");
}
}
它自动加载,我没有必要在composer.json中添加它