亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 驗證數組必須包含布爾值為 true 的一項

Laravel 驗證數組必須包含布爾值為 true 的一項

PHP
飲歌長嘯 2023-07-08 16:34:03
我正在驗證問題和答案(用于測試創建)。我想確保答案數組至少包含一個“正確”項目。那么在哪里answers.*.correct => true。我目前有以下內容:public function rules()? ? {? ? ? ? return [? ? ? ? ? ? 'title' => 'required|string|max:255',? ? ? ? ? ? 'test_id' => 'required|integer|exists:tests,id',? ? ? ? ? ? 'content' => 'required',? ? ? ? ? ? 'answers' => 'required|array',? ? ? ? ? ? 'answers.*.text' => 'required|string|max:255',? ? ? ? ? ? 'answers.*.correct' => 'required|boolean'? ? ? ? ];? ? }目前,我可能會錯過添加正確答案,從而導致不可能的問題。我檢查了文檔,但看不到任何突出的內容。任何幫助,將不勝感激。編輯答案我使用了這個(正如答案提到的):Laravel 驗證表單數組中的至少一項我設法創建一個自定義規則,如下所示:? ? public function passes($attribute, $value)? ? {? ? ? ? foreach ($value as $arrayElement) {? ? ? ? ? ? if ($arrayElement['correct'] == true) {? ? ? ? ? ? ? ? return true;? ? ? ? ? ? }? ? ? ? }? ? ? ? return false;? ? }然后在我創建的新規則中添加的請求的現有規則()部分中:'answers' => ['required', 'array', new ArrayAtLeastOneBoolTrue()],
查看完整描述

1 回答

?
開滿天機

TA貢獻1786條經驗 獲得超13個贊

您在這里驗證數組答案是否具有:

  1. 最大的字符串。255 個字符(文本)

  2. 布爾值(正確)

要檢查此數組的完整性,Laravel 請求是錯誤的檢查位置。從技術上講,可以創建自己的驗證規則,但在這里沒有意義。相反,您應該在控制器中迭代此數組并驗證每個答案的完整性。為了做得更好,還有兩個想法:

  • 不要在一個數組中發送所有答案以及是否正確回答了這些答案。相反,在用戶單擊它時,將所選答案發送到您的 api,并為每個答案發送一個請求。這將 1. 防止有人向您發送他 100% 正確回答的信息(如果這是學校軟件則不好:)) 2. 根據問題的數量,它將減少發送到服務器的數據一個最小值,主要是因為...

  • ...看來您將問題的全文發送到服務器來識別答案。每個問題使用唯一的 ID,并將其作為問題 ID + 所選或輸入的答案發送。

查看完整回答
反對 回復 2023-07-08
  • 1 回答
  • 0 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號