You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Kanboard中点击按钮触发代码时为何出现Undefined Index错误?

Kanboard点击按钮触发Undefined Index错误的原因与解决

报错信息

[php7:notice] PHP Notice: Trying to access array offset on value of type null in /var/www/.../public_html/app/Helper/LayoutHelper.php on line 90
[php7:notice] PHP Notice: Undefined index: project in /var/www/.../public_html/app/Helper/LayoutHelper.php on line 91

问题代码

<?= $this->url->link(t('Delete'), 'ContactsItemsController', 'remove', array('item_id' => $item['id'], 'plugin' => 'AddressBook'), true, 'btn btn-red') ?>

错误原因

  1. 第一个报错:$item变量为null,直接访问$item['id']属于对null值进行数组偏移操作,触发PHP提示。你之前尝试的isset($item['id'])返回的是布尔值(true/false),并非实际ID值,不能直接赋值给item_id。
  2. 第二个报错:Kanboard的url->link方法在生成链接时,内部逻辑(LayoutHelper.php中)需要访问project相关索引,但你传递的参数数组未提供该值,且当前请求上下文也没有默认的project数据,导致索引未定义。

正确解决方法

方法1:先校验变量有效性,补充project参数

<?php if (isset($item['id']) && isset($project['id'])): ?>
    <?= $this->url->link(t('Delete'), 'ContactsItemsController', 'remove', array(
        'item_id' => $item['id'],
        'plugin' => 'AddressBook',
        'project_id' => $project['id'] // 按Kanboard路由规则补充project参数,通常为project_id
    ), true, 'btn btn-red') ?>
<?php endif; ?>

注:参数名称以ContactsItemsController::remove方法的路由定义为准,多数场景下是project_id。

方法2:用null合并运算符简化判断(PHP7+)

如果希望在$item无效时不渲染按钮:

<?= isset($item['id'], $project['id']) ? $this->url->link(t('Delete'), 'ContactsItemsController', 'remove', array(
    'item_id' => $item['id'],
    'plugin' => 'AddressBook',
    'project_id' => $project['id']
), true, 'btn btn-red') : '' ?>

关键说明

你之前的错误写法是将isset($item['id'])的布尔结果传给item_id,不符合接口对参数的要求,必须传递实际的ID数值,同时要确保$item不为null。第二个报错的核心是缺少project相关参数,需按Kanboard的路由规则补充对应字段。

内容的提问来源于stack exchange,提问作者aljawaid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 22:03:21