Not restoring parent Each's key on some conditions
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 75/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- php
- Lĩnh vực
- backend-api-design
Hướng nghiên cứu
Vấn đề nằm trong lớp EachHandler, cụ thể là hai câu lệnh return không khôi phục khóa của Each cha. Bắt đầu bằng cách định vị tệp EachHandler trong codebase. Kiểm tra phương thức validate để hiểu luồng xử lý. Bản sửa lỗi liên quan đến việc thêm $context->setParameter(Each::PARAMETER_EACH_KEY, $originalEachKey); trước mỗi câu lệnh return có vấn đề. Chạy các bài kiểm tra hiện có liên quan đến xác thực Each để đảm bảo bản sửa không làm hỏng bất cứ thứ gì.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Description
In EachHandler there are 2 returns without restoring in context parent Each's key.
Code in question:
$originalEachKey = $context->getParameter(Each::PARAMETER_EACH_KEY); // <== storing parent key
foreach ($value as $index => $item) {
if (!is_int($index) && !is_string($index)) {
return (new Result())->addError($rule->getIncorrectInputKeyMessage(), [ // <== bug, return without restoring parent key
'property' => $context->getTranslatedProperty(),
'Property' => $context->getCapitalizedTranslatedProperty(),
'type' => get_debug_type($index),
]);
}
$context->setParameter(Each::PARAMETER_EACH_KEY, $index);
$itemResult = $context->validate($item, $rules);
if ($itemResult->isValid()) {
continue;
}
foreach ($itemResult->getErrors() as $error) {
$result->addErrorWithoutPostProcessing(
$error->getMessage(),
$error->getParameters(),
$error->getValuePath() === [] ? [$index] : [$index, ...$error->getValuePath()],
);
}
if ($rule->stopOnError) {
return $result; // <== bug, return without restoring parent key
}
}
$context->setParameter(Each::PARAMETER_EACH_KEY, $originalEachKey); // <== restoring parent key
return $result;
Package version
No response
PHP version
No response
- Ngôn ngữ chính
- PHP
- Star
- 167
- Fork
- 47
- Merge trung bình
- 1 ngày 16 giờ
- Pull request đã merge (30 ngày)
- 4
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của yiisoft/validator
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 68/100
-
Multibyte trim supportĐang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 62/100
-
Make File size validation messages human-readableCó thể làm lại được @samdark đã nhận 117 ngày trước và không có pull request nào đang mở. Đang mởtype:bug
Tất cả issue của yiisoft/validator
Issue tương tự
-
Infrastructure: actions Module: zmscitizenapi Module: zmsentities php Type: Bug unit tests
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
it-at-m/eappointment#3480 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
CI: composer install fails — league/flysystem 1.x blocked by security advisory GHSA-cxf4-7mrp-vvprĐang mởdevops type: bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Maintainer thường phản hồi trong vòng 1 ngày
-
needs approval
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 3 ngày
-
product / avatars product / self-hosted product / storage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
appwrite/appwrite#13985 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày