2017-05-28 49 views
0

我正在製作Laravel應用程序,我的用戶可以在註冊時選擇他們的username,但我也想禁止他們選擇一些用戶名,如「管理員,管理員等」。我怎樣才能做到這一點?禁止用戶選擇指定的用戶

+0

嗨!如果你在代碼堆棧中創建一個最小,完整和可驗證的例子(http://stackoverflow.com/help/mcve),以便將來可以在Stack溢出時使用,那將會更好。 - 謝謝 – Momin

回答

1

創建一個自定義的驗證吧..你AppServiceProvider

public function boot() 
{ 
    Validator::extend('not_exist', function ($attribute, $value, $parameters,$validator) 
    { 
     if(count(Prohibit::where('name','=',$value)->get()) == 0){ 
      return true; 
     } 
     return false; 
    }); 
} 

然後在資源/郎/ EN/validation.php它添加到陣列

'not_exist' => ":attribute prohibitted.", 
+0

需要這些也'使用Validator;''使用App \ Probihit;'和在註冊表格驗證''用戶名'=>'所需|字符串| max:255 | unique:users | not_exist',' – djhru

+0

很可能..假設你已經知道了:p – Demonyowh

+0

@robertnicjoo如果你想使用DB解決方案,只需使用'unique'規則(檢查我的答案)不需要爲此創建自定義規則。 –

0

添加驗證規則not_in:admin,Administrator,...

+0

如何讓它不區分大小寫? – djhru

1

您可以使用not_in驗證規則:

'name' => 'not_in:Admin,Administrator' 

或者你可以保持單詞列表中的數據表,並使用unique規則:

'name' => 'unique:table_name,name' 

如果你想允許管理員編輯這些單詞,這是一個更好的選擇。

+0

如何使它不區分大小寫? – djhru

+0

@robertnicjoo在這種情況下,您可以[創建您自己的驗證規則](https://laravel.com/docs/5.4/validation#custom-validation-rules)並使用'in_array()'函數檢查字符串值是數組中的單詞之一。 –

+0

這不會做..如果它存在,存在工作,並給出一個錯誤,如果沒有.. – Demonyowh