Not restoring parent Each's key on some conditions
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 75/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- php
調査の方向性
この問題は EachHandler クラスにあり、具体的には親 Each のキーを復元しない 2 つの return 文にあります。まず、コードベース内の EachHandler ファイルを見つけてください。validate メソッドを調べてフローを理解します。修正には、問題のある各 return の前に $context->setParameter(Each::PARAMETER_EACH_KEY, $originalEachKey); を追加することが含まれます。Each 検証に関連する既存のテストを実行して、修正が何も壊さないことを確認してください。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- PHP
- スター
- 167
- フォーク
- 47
- 平均マージ
- 1日 7時間
- マージ済み PR(30日)
- 1
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
yiisoft/validator のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
-
Dataset is not passed to context in StopOnError()対応中かも @vjik が 24 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 62/100
-
Make File size validation messages human-readable対応中かも @samdark が 137 日前に担当しました。 オープンtype:bug
yiisoft/validator の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Automattic/blocks-engine#3090 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
-
macOS
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
beyondcode/herd-community#1771 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 63/100
-
module: user interface priority: high severity: minor type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信