Asked thg 11 20, 2020 3:20 SA 146 0 3
  • 146 0 3
0

Validation input array laravel

Share
  • 146 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 thg 11 20, 2020 3:29 SA
Accepted
+3

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

<select name="question[{{ $id }}]">
Share
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

0
| Reply
Share
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

0
| Reply
Share
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 ạ

0
| Reply
Share
Answered 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

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

0
| Reply
Share
Answered thg 11 20, 2020 4:46 SA
+1
$array = ['question' => 'required|array'];
foreach ($vars as $var) {
        $array += ['question.*.' . $var => 'required'];
}
Share
Viblo
Let's register a Viblo Account to get more interesting posts.