Nogle gange sker det, at AdminCategory::deletecategory($parentId) kaldes uden en parameter, men prototypen har ikke en standardværdi for det, og derfor er der en undtagelse. Da du får data fra en postanmodning, og der altid er en mulighed for, at en kategori ikke har en forælder, kan du ændre din metode til at se sådan ud:
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
}
Hvis du bruger indtastningstip, vil mere passende være at få metoden til at se ud
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
}
Hvis du VIRKELIG forventer, at forældre-ID SKAL videregives, så omslut i stedet metodeopkaldet 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
}
}