-
Notifications
You must be signed in to change notification settings - Fork 9
Description
Passos para reproduzir:
- Acessar Menu > Oferecimentos
- Clicar em Visualizar em qualquer dos oferecimentos relacionados
- Escolher um exercício e clicar em Ver Detalhes
- Em Casos de Teste, escolher um caso de teste e clicar em Mostrar Entrada (Sim | Não)
Notice (8): UNDEFINED INDEX: exercise_id [APP/Model/ExerciseCase.php, line 213]
ExerciseCase::afterSave() - APP/Model/ExerciseCase.php, line 213
CakeEventManager::dispatch() - CORE/Cake/Event/CakeEventManager.php, line 245
Model::save() - CORE/Cake/Model/Model.php, line 1861
Model::saveField() - CORE/Cake/Model/Model.php, line 1667
ExerciseCasesController::toggleShowInput() - APP/Controller/ExerciseCasesController.php, line 610
ReflectionMethod::invokeArgs() - [internal], line ??
Controller::invokeAction() - CORE/Cake/Controller/Controller.php, line 490
Dispatcher::_invoke() - CORE/Cake/Routing/Dispatcher.php, line 185
Dispatcher::dispatch() - CORE/Cake/Routing/Dispatcher.php, line 160
[main] - APP/webroot/index.php, line 89
O erro acima parece não afetar o funcionamento do sistema, pois basta voltar uma página no navegador e recarregar para ver que a ação de mostrar ou ocultar a entrada foi processada corretamente. No entanto, o ideal seria retornar para a página de detalhes do exercício.
A solução que encontrei foi adicionar a linha abaixo na função beforeSave em app/Model/ExerciseCase.php:
$this->data['ExerciseCase']['exercise_id'] = $this->field("exercise_id");
Dessa forma, data['ExerciseCase'] chega com o índice exercise_id para a função afterSave e a execução parece correr bem.
Seria essa a forma correta de solucionar este problema? Ou neste caso data['ExerciseCase'] realmente não deveria conter o índice exercise_id e o correto seria remover a linha $Cache->removeItem("exercise-" . $this->data['ExerciseCase']['exercise_id']); da função afterSave ou algo do tipo?
Se a solução apresentada estiver correta, posso abrir um pull request para esta issue caso isso auxilie de alguma forma.