Ibland händer det att AdminCategory::deletecategory($parentId) anropas utan en parameter men prototypen har inget standardvärde för det och därför kastas undantag. Eftersom du får data från en postförfrågan och det alltid finns en möjlighet att en kategori inte har en förälder kan du ändra din metod till att se ut så här:
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
}
Om du använder skrivtips skulle det vara lämpligare att få metoden att se ut som
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
}
Om du VERKLIGEN förväntar dig att föräldra-ID MÅSTE skickas, linda istället metoduppringaren med try catch
if (method_exists($object, $this->method)) {
try {
call_user_func_array([$object, $this->method], $this->params);
} catch (\Exception $ex) {
// HANDLE EXCEPTION HERE
}
}