Yêu cầu Nov 20th, 2020 3:20 a.m. 150 0 3
  • 150 0 3
0

Validation input array laravel

Chia sẻ
  • 150 0 3

Chào các bác, em có input dạng

<select name="question[$id][$var]">

em thử validation

'question.*' => 'required',

nhưng luôn luôn pass vì thằng question[] luôn tồn tại, còn thằng question[][] null thì validation không bắt được , bác nào giúp em với ạ

3 CÂU TRẢ LỜI


Đã trả lời Nov 20th, 2020 3:29 a.m.
Đã được chấp nhận
+3

Bác thử thay lại các select xem sao

<select name="question[{{ $id }}]">
Chia sẻ
Avatar newbie @NanaCongchua
Nov 20th, 2020 3:35 a.m.

em mới edit câu hỏi anh xem dùm em với

Avatar Quiet @simple1805
Nov 20th, 2020 3:42 a.m.

@NanaCongchua Mình đoán thôi 😄

'question.*.*' => 'required',

nhưng mà trường của bạn mình nghĩ sao cần thiết phải đặt name là question[$id][$var] nhỉ. Đơn giản là bạn có 1 cái name cần truyền lên để check thì dùng thằng cái name là question cũng được mà. Hay bạn muốn cái params truyền lên phải là array nhỉ. Nếu mà muốn truyền lên dạng array thì cũng phải thêm multiple vào thẻ select nữa

Avatar newbie @NanaCongchua
Nov 20th, 2020 4:05 a.m.

@huusu1996 cái select của em nằm trong 2 vòng for ạ. Em thử

foreach ($this->request->get('question') as $key => $value) {
            $rule['question.'.$key.'.question.*'] = 'required';
        }

thì chạy rồi ạ

Đã trả lời Nov 20th, 2020 3:23 a.m.
+2

Giá trị $id có thể chưa được truyền vào nên request sẽ dùng là question[$id] đấy, em check lại request xem

Chia sẻ
Avatar newbie @NanaCongchua
Nov 20th, 2020 3:31 a.m.

em viết thiếu, thực ra input có dạng <select name="question[$id][$var]"> nên check question.* luôn đúng, em nghĩ phải là question[].* mới đúng nhưng mà không biết viết kiểu gì ạ

Đã trả lời Nov 20th, 2020 4:46 a.m.
+1
$array = ['question' => 'required|array'];
foreach ($vars as $var) {
        $array += ['question.*.' . $var => 'required'];
}
Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí