2017-02-11 125 views
0

我想驗證請求的陣列,它是這樣的:laravel陣列密鑰驗證規則

"accountType": { 
    "admin" : true, 
    "advertiser": true, 
    "publisher": true, 
    "agency": true 
    }, 

我要檢查,如果管理員是真實的,什麼也不做,傳球,但如果管理員是假的,其他都是真實的或沒有管理員在accountType對象驗證拋出錯誤,如:無效的帳戶類型。

另一個字我想檢查是否有請求數組中的管理員通過驗證,如果沒有,並且還有其他類型顯示錯誤,反之亦然。

這是我的驗證,但它只是通過反正:

$validator = Validator::make($this->request->all(), [ 
      'accountType.admin' => 'boolean:true', 
      'accountType.advertiser' => 'boolean:false', 
      'accountType.publisher' => 'boolean:false', 
      'accountType.agency' => 'boolean:false', 
     ]); 
+0

的'boolean'有效性規則不接受參數。 –

+0

@RossWilson所以你的建議,使其工作? –

回答

1

嘗試

$validator = Validator::make($this->request->all(), [ 
      'accountType.admin' => 'required|boolean:true', 
      'accountType.advertiser' => 'boolean:false', 
      'accountType.publisher' => 'boolean:false', 
      'accountType.agency' => 'boolean:false', 
     ]); 
+0

不工作,它通過了所有屬性。我的意思是廣告客戶和其他角色會通過,我想拋出其他角色的錯誤,如果他們是真的 –

0

應該做的伎倆,從文檔:他在確認字段必須能夠澆鑄成布爾值。接受的輸入是true,false,1,0,「1」和「0」。

$validator = Validator::make($this->request->all(), [ 
    'accountType.admin' => 'boolean', 
    'accountType.advertiser' => 'boolean', 
    'accountType.publisher' => 'boolean', 
    'accountType.agency' => 'boolean', 
]); 
+0

你沒有完全讀過這個問題?我想它會拋出錯誤,如果除了管理員以外的任何其他角色設置和他們的價值是真實的給我錯誤,這種方式它只是通過驗證。 –

+0

您的權利,道歉,如果您只爲了管理員,爲什麼不使用中間件? – Adam

+0

不要提到它,這個驗證是爲了更新用戶角色。我在我的問題中說,它需要一段時間來檢查是否只有管理員是真實的,反之亦然,如果它包含管理員拋出錯誤。但我的問題是它不檢查,它只是通過,如果它是真的或假的。 –

0

你可以改變自己的價值觀,以1爲真,0爲假,則驗證,如:

$validator = Validator::make($this->request->all(), [ 
    'accountType.admin' => 'required|min:1', 
    'accountType.advertiser' => 'required|min:1', 
    'accountType.publisher' => 'required|min:1', 
    'accountType.agency' => 'required|min:1', 
]); 
+1

我會檢查並讓你知道 –

+0

它沒有幫助,它給了我1個字符的錯誤是必需的。而我的請求由accountType.agency:true組成 –