Asked Nov 20th, 3:20 AM 117 0 3
  • 117 0 3
0

Validation input array laravel

Share
  • 117 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 ANSWERS


Answered Nov 20th, 3:29 AM
Accepted
+3

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

<select name="question[{{ $id }}]">
Share
tung pham son @NanaCongchua
Nov 20th, 3:35 AM

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

0
| Reply
Share
Nov 20th, 3:42 AM

@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

0
| Reply
Share
tung pham son @NanaCongchua
Nov 20th, 4:05 AM

@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 ạ

0
| Reply
Share
Answered Nov 20th, 3:23 AM
+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

Share
tung pham son @NanaCongchua
Nov 20th, 3:31 AM

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ì ạ

0
| Reply
Share
Answered Nov 20th, 4:46 AM
+1
$array = ['question' => 'required|array'];
foreach ($vars as $var) {
        $array += ['question.*.' . $var => 'required'];
}
Share