2017-07-21 87 views
0

我有一个的ServiceProvider:Laravel动态创建功能

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\[email protected]'); 
     Validator::extend('lastname_fail', 'App\Services\[email protected]'); 
     Validator::extend('hotel_fail', 'App\Services\[email protected]'); 
     Validator::extend('city_fail', 'App\Services\[email protected]date'); 
    } 

}

我有一个模型旅游,其中有这样的属性:名字,姓氏,酒店,城市。并且可以添加一些其他(很多)属性。

(我知道如何从旅游模型中的所有字段名称:$阵列=架构:: getColumnListing(“旅游者”);)

所以我的问题是如何使动态创建的:

验证::延伸( 'fieldname_fail', “应用程序\服务\的CustomValidator @字段名 FailValidator')

里面的boot()方法?

我试图用魔法_call的方法,但没有成功......

感谢任何帮助!:)

+0

我可以闻到这个在网络上!如此多的魔力就是不好的,当你在30天后回来时,你将不知道这部分应用程序是如何工作的。 – Kyslik

回答

1

如果我理解正确的话,你需要这样的事情。

  1. 对表格字段(模型属性)进行迭代;
  2. 为每个字段(模型属性)扩展验证程序。

这里是一个代码示例:

foreach (Schema::getColumnListing('tourists') as $attribute) { 
    Validator::extend("{$attribute}_fail", "App\Services\[email protected]{$attribute}FailValidator"); 
} 
+0

你太棒了!这是如此简单,我觉得没有搞清楚。 –

+0

你犯了一个错误:“$ {$ attribute} _fail”shuold be“{$ attribute} _fail” 和“$ {$ attribute} FailValidator”应该是“{$ attribute} FailValidator”。请更正你的答案,我接受它为“正确”:) –

+0

你是对的!完成) – tooleks