gpt4 book ai didi

php - fatal error :未捕获的 ArgumentCountError:函数 Admincategory::deletecategory() 的参数太少,

转载 作者:行者123 更新时间:2023-11-29 18:14:55 25 4
gpt4 key购买 nike

我知道有一些与此相关的问题,但是有c++或其他语言。我收到此错误,但不确定我的功能出了什么问题。这是我的错误

Fatal error: Uncaught ArgumentCountError: Too few arguments to function Admincategory::deletecategory(), 0 passed in F:\xampp\htdocs\digikalamvc\core\app.php on line 34 and exactly 1 expected in F:\xampp\htdocs\digikalamvc\controllers\admincategory.php:50 Stack trace: #0 F:\xampp\htdocs\digikalamvc\core\app.php(34): Admincategory->deletecategory() #1 F:\xampp\htdocs\digikalamvc\index.php(6): App->__construct() #2 {main} thrown in F:\xampp\htdocs\digikalamvc\controllers\admincategory.php on line 50

我的功能是:

<?php

class Admincategory extends Controller
{


function __construct()
{
parent::__construct();
}


function index()
{

$category = $this->model->getChildren(0);
$data = ['category' => $category];
$this->view('admin/category/index', $data);
}


function showchildren($idcategory)
{

$categoryInfo = $this->model->categoryInfo($idcategory);
$children = $this->model->getChildren($idcategory);
$parents = $this->model->getParents($idcategory);
$data = ['categoryInfo' => $categoryInfo, 'category' => $children, 'parents' => $parents];

$this->view('admin/category/index', $data);
}


function addcategory($categoryId = 0, $edit = '')
{

if (isset($_POST['title'])) {
$title = $_POST['title'];
$parent = $_POST['parent'];
$this->model->addCategory($title, $parent, $edit, $categoryId);
}
$category = $this->model->getCategory();
$categoryInfo = $this->model->categoryInfo($categoryId);

$data = ['category' => $category, 'parentId' => $categoryId, 'edit' => $edit, 'categoryInfo' => $categoryInfo];
$this->view('admin/category/addcategory', $data);
}


function deletecategory($parentId)
{
$ids = $_POST['id'];
$this->model->deletecategory($ids);
header('location:'.URL.'admincategory/showchildren/'.$parentId);
}

}

?>
<小时/>

app.php 文件

<小时/>
<?php


class App
{

public $controller = 'index';
public $method = 'index';
public $params = [];


function __construct()
{
if (isset($_GET['url'])){
$url = $_GET['url'];
$url = $this->parseUrl($url);
$this->controller = $url[0];
unset($url[0]);
if (isset($url[1])){
$this->method = $url[1];
unset($url[1]);
}

$this->params = array_values($url);
}
$controllerUrl = 'controllers/' . $this->controller . '.php';
if (file_exists($controllerUrl)) {
require($controllerUrl);
$object = new $this->controller;

$object->model($this->controller);

if (method_exists($object, $this->method)) {
call_user_func_array([$object, $this->method], $this->params);
}
}


}

function parseUrl($url)
{
$url = filter_var($url, FILTER_SANITIZE_URL);
$url=rtrim($url,'/');
$url = explode('/', $url);
return $url;
}

}



?>
<小时/>

和index.php

<小时/>
<?php

require('views/admin/layout.php');
$category = $data['category'];

$categoryInfo = [];
if (isset($data['categoryInfo'])) {
$categoryInfo = $data['categoryInfo'];
}
$parents = [];
if (isset($data['parents'])) {
$parents = $data['parents'];
$parents = array_reverse($parents);
}

?>

<style>

.w400 {
width: 600px;
}

</style>

<div class="left">

<p class="title">
مدیریت دسته ها

(
<?php foreach ($parents as $row) { ?>

<a href="admincategory/showchildren/<?= $row['id']; ?>">
<?= $row['title']; ?>
</a>
-

<?php } ?>

<a href="admincategory/<?php if (isset($categoryInfo['id'])) {
echo 'showchildren/' . $categoryInfo['id'];
} else {
echo 'index';
} ?>">
<?php
if (isset($categoryInfo['title'])) {
echo $categoryInfo['title'];
} else {
echo 'دسته های اصلی';
}
?>
</a>

)

</p>

<a class="btn_green_small" href="admincategory/addcategory/<?= @$categoryInfo['id']; ?>">
افزودن
</a>


<a class="btn_red_small" onclick="submitForm();">
حذف
</a>

<form action="admincategory/deletecategory/<?= @$categoryInfo['id']; ?>" method="post">

<table class="list" cellspacing="0">

<tr>
<td>
ردیف
</td>

<td>
عنوان دسته
</td>

<td>
مشاهده زیر دسته ها
</td>

<td>
ویرایش
</td>

<td>
انتخاب
</td>

</tr>

<?php

foreach ($category as $row) {
?>

<tr>

<td>
<?= $row['id']; ?>
</td>

<td class="w400">
<?= $row['title']; ?>
</td>

<td>
<a href="admincategory/showchildren/<?= $row['id']; ?>">
<img src="public/images/view_icon.png" class="view">
</a>
</td>

<td>
<a href="admincategory/addcategory/<?= $row['id']; ?>/edit">
<img src="public/images/edit_icon.ico" class="view">
</a>
</td>

<td>
<input type="checkbox" name="id[]" value="<?= $row['id']; ?>">
</td>

</tr>

<?php } ?>

</table>

</form>

</div>

</div>
<小时/><小时/>

============

感谢您的帮助!

最佳答案

有时会发生这样的情况:在没有参数的情况下调用 AdminCategory::deletecategory($parentId) 但原型(prototype)没有默认值,因此会引发异常。由于您从发布请求中获取数据,并且类别总是有可能没有父级,因此您可以将您的方法重构为如下所示:

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
}

如果您使用输入提示,更合适的方法是使方法看起来像

 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
}

如果您确实希望必须传递parentId,那么请使用try catch 包装方法调用者

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

关于php - fatal error :未捕获的 ArgumentCountError:函数 Admincategory::deletecategory() 的参数太少,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47108428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com