我有一个ServiceProvider:
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
use \Validator;
use App\Services\CustomValidator;
class AppServiceProvider extends ServiceProvider
{
public function boot() {
Validator::extend('firstname_fail', 'App\Services\CustomValidator@fullnameFailValidate');
Validator::extend('lastname_fail', 'App\Services\CustomValidator@lastnameFailValidate');
Validator::extend('hotel_fail', 'App\Services\CustomValidator@hotelFailValidate');
Validator::extend('city_fail', 'App\Services\CustomValidator@cityFailValidate');
}
}
我有一个模特游客,它有这样的属性:名字,姓氏,酒店,城市。并且可以添加一些其他(许多)属性。
(我知道如何从Tourist模型中获取所有字段名称:$ array = Schema :: getColumnListing('tourist');)
所以我的问题是如何动态创建:
验证::延伸( '的 fieldname_fail ', “应用\服务\的CustomValidator @的字段名 FailValidator')
在boot()方法中?
我尝试使用magic _call方法,但没有成功......
任何帮助表示感谢!:)
答案 0 :(得分:1)
如果我理解正确,你需要这样的东西。
这是一个代码示例:
foreach (Schema::getColumnListing('tourists') as $attribute) {
Validator::extend("{$attribute}_fail", "App\Services\CustomValidator@{$attribute}FailValidator");
}