phpMyAdmin
 sql >> Base de Dados >  >> Database Tools >> phpMyAdmin

Erro fatal:Uncaught ArgumentCountError:Muito poucos argumentos para a função Admincategory::deletecategory(),


Às vezes acontece que AdminCategory::deletecategory($parentId) é chamado sem um parâmetro, mas prototype não tem um valor padrão para ele e, portanto, uma exceção é lançada. Como você obtém dados de uma solicitação de postagem e sempre existe a possibilidade de uma categoria não ter um pai, você pode refatorar seu método para se parecer com:
function deletecategory($parentId = null)
{
    $ids = $_POST['id'];
    $this->model->deletecategory($ids);
    if (null !== $parentId) {
        header('location:'.URL.'admincategory/showchildren/'.$parentId);
    }
    // PUT MORE OF YOUR LOGIC HERE, I DO NOT KNOW WHAT SHOULD HAPPEN
}

Se você estiver usando dicas de digitação, mais apropriado seria fazer o método parecer
 function deletecategory(string $parentId = ''): void //void is for php7.1
 {
    $ids = $_POST['id'];
    $this->model->deletecategory($ids);
    if ('' !== $parentId) {
        header('location:'.URL.'admincategory/showchildren/'.$parentId);
    }
    // AGAIN LOGIC HERE
 }

Se você REALMENTE espera que parentId DEVE ser passado, em vez disso, envolva o chamador do método com try catch
if (method_exists($object, $this->method)) {
    try {
        call_user_func_array([$object, $this->method], $this->params);
    } catch (\Exception $ex) {
        // HANDLE EXCEPTION HERE
    }
}