Not restoring parent Each's key on some conditions
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 75/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- php
- Ambito
- backend-api-design
Direzione di ricerca
Il problema si trova nella classe EachHandler, in particolare nelle due istruzioni return che non ripristinano la chiave del Each genitore. Inizia individuando il file EachHandler nella codebase. Esamina il metodo validate per comprenderne il flusso. La correzione prevede di aggiungere $context->setParameter(Each::PARAMETER_EACH_KEY, $originalEachKey); prima di ogni return problematico. Esegui i test esistenti relativi alla validazione di Each per assicurarti che la correzione non rompa nulla.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- PHP
- Stelle
- 167
- Fork
- 47
- Merge medio
- 1g 7h
- PR unite (30g)
- 2
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di yiisoft/validator
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Dataset is not passed to context in StopOnError()Forse già presa @vjik l’ha presa 21 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 65/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
-
Multibyte trim supportAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
-
Make File size validation messages human-readableForse già presa @samdark l’ha presa 133 giorni fa. Apertatype:bug
Tutte le issue di yiisoft/validator
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
Automattic/blocks-engine#2866 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
community-scripts/ProxmoxVE#17944 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
EasyCorp/EasyAdminBundle#7861 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Good first issue: add laravel-inertia stack budget preset (Laravel 11 + Inertia.js + PHP 8.3)Apertaenhancement good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
backend gamification P0
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
semanadeinformatica/website#461 ·