Yêu cầu thg 11 20, 2020 3:20 SA 149 0 3
  • 149 0 3
0

Validation input array laravel

Chia sẻ
  • 149 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 thg 11 20, 2020 3:29 SA
Đã đượ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
thg 11 20, 2020 3:35 SA

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

Avatar Quiet @simple1805
thg 11 20, 2020 3:42 SA

@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
thg 11 20, 2020 4:05 SA

@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 thg 11 20, 2020 3:23 SA
+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
thg 11 20, 2020 3:31 SA

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 thg 11 20, 2020 4:46 SA
+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í