要在laravel 5.1 中制作自定义验证规则,我在CustomValidators
目录中创建了一个名为App/Validatiors
的类,如下所示:
namespace App\Validators;
use App\Classes\Utilities;
class CustomValidators extends \Illuminate\Validation\Validator
{
public function DateTime ($field , $value ,$param, $validator){
dd($value);
}
}
在AppServiceProvider.php
中,我补充说:
Validator::extend('date_time', 'App\Validators\CustomValidators@DateTime');
并且在控制器的store()
功能中我使用它:
$rules = array (
'start_publish' => 'date_time',
);
但是在运行App时出现了这个错误:
BindingResolutionException in Container.php line 824:
Unresolvable dependency resolving [Parameter #1 [ <required> array $data ]] in class Illuminate\Validation\Validator
直接在AppServiceProvider.php
中定义 DateTime()函数时的诅咒,所有内容都是这样的:
Validator::extend('date_time', function ($field , $value ,$param, $validator){
dd($value);
});
时有什么问题
答案 0 :(得分:7)
我发现了问题
在定义\Illuminate\Validation\Validator
类时我不应该扩展CustomValidators
,因为它会通过以下方式自动扩展Validator
类:
Validator::extend('date_time', 'App\Validators\CustomValidators@DateTime');
实际上CustomValidators
类必须是这样的:
namespace App\Validators;
use App\Classes\Utilities;
class CustomValidators
{
public function DateTime ($field , $value ,$param, $validator){
dd($value);
}
}