phpMyAdmin
 sql >> Base de données >  >> Database Tools >> phpMyAdmin

Erreur fatale :non détecté ArgumentCountError :trop peu d'arguments pour fonctionner Admincategory::deletecategory(),

Parfois, il arrive que AdminCategory::deletecategory($parentId) soit appelé sans paramètre mais prototype n'a pas de valeur par défaut et donc une exception est levée. Étant donné que vous obtenez des données à partir d'une demande de publication et qu'il est toujours possible qu'une catégorie n'ait pas de parent, vous pouvez refactoriser votre méthode pour qu'elle ressemble à :

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
}

Si vous utilisez des conseils de frappe, il serait plus approprié de faire en sorte que la méthode ressemble à

 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
 }

Si vous vous attendez VRAIMENT à ce que parentId DOIT être passé, enveloppez plutôt l'appelant de la méthode avec try catch

if (method_exists($object, $this->method)) {
    try {
        call_user_func_array([$object, $this->method], $this->params);
    } catch (\Exception $ex) {
        // HANDLE EXCEPTION HERE
    }
}