Routes codeigniter 4路由命名路由不生成href

Routes codeigniter 4路由命名路由不生成href,routes,href,codeigniter-4,named-routing,Routes,Href,Codeigniter 4,Named Routing,我有一条路线应该为锚定标记生成href,但我没有得到href: <a href="" style="color:white !important" class="btn btn-info postlist">Update</a> 我期待着像这样的事情 注意:尝试了未命名和命名的方式都没有生成任何href 简短的回答是(:id)不受支持。有人反对使用(:num) 因此,快速解决方法是使用(:num)而不是(:id) 是一样的 临时修复是在需要时更改核心文件 免责声明:强烈

我有一条路线应该为锚定标记生成href,但我没有得到href:

<a href="" style="color:white !important" class="btn btn-info postlist">Update</a>
我期待着像这样的事情

注意:尝试了未命名和命名的方式都没有生成任何href

简短的回答是(:id)不受支持。有人反对使用(:num)

因此,快速解决方法是使用(:num)而不是(:id)

是一样的

临时修复是在需要时更改核心文件

免责声明:强烈建议不要更改核心文件。 自行承担风险

在文件/system/Router/RouteCollection.php的第117行中

是:

/**
 * Defined placeholders that can be used
 * within the
 *
 * @var array
 */
protected $placeholders = [
    'any'      => '.*',
    'segment'  => '[^/]+',
    'alphanum' => '[a-zA-Z0-9]+',
    'num'      => '[0-9]+',
    'alpha'    => '[a-zA-Z]+',
    'hash'     => '[^/]+',
];
/**
 * Defined placeholders that can be used
 * within the
 *
 * @var array
 */
protected $placeholders = [
    'any'      => '.*',
    'segment'  => '[^/]+',
    'alphanum' => '[a-zA-Z0-9]+',
    'num'      => '[0-9]+',
    'alpha'    => '[a-zA-Z]+',
    'hash'     => '[^/]+',
    'id'       => '[0-9]+'
];
如果您真的需要它,它可以是:

/**
 * Defined placeholders that can be used
 * within the
 *
 * @var array
 */
protected $placeholders = [
    'any'      => '.*',
    'segment'  => '[^/]+',
    'alphanum' => '[a-zA-Z0-9]+',
    'num'      => '[0-9]+',
    'alpha'    => '[a-zA-Z]+',
    'hash'     => '[^/]+',
];
/**
 * Defined placeholders that can be used
 * within the
 *
 * @var array
 */
protected $placeholders = [
    'any'      => '.*',
    'segment'  => '[^/]+',
    'alphanum' => '[a-zA-Z0-9]+',
    'num'      => '[0-9]+',
    'alpha'    => '[a-zA-Z]+',
    'hash'     => '[^/]+',
    'id'       => '[0-9]+'
];
更改是添加模仿'num''id'条目


将所有对(:id)的引用简单地更改为(:num)会安全得多。

即使它们的示例(带有打字错误)不起作用。似乎当您添加(:id)和好友时,它会抛出一个错误。我必须深入研究代码,但我现在有点忙。如果你让它像/post一样简单,那么(:any)就行了。你试过了吗,是的,我还没有完全放弃:)注意你对数据的使用非常肯定[I][“确认”]=“链接代码”。这是否意味着$data[$i]['confirm']?@TimBrownlaw我在这里学习,尤其是在路由方面,我需要改进这一部分。至于索引,它的
i
不是
$i
。。我还没试过,我要试一下,我需要集中精力回答另一个问题:)我明白了。。它就像:id是一个保留字?或者类似的?我不是那样想的。我一做完另一个就试试这个:)快乐的编码伙伴。。你帮了我很大的忙我很感激你我认为有人不赞成使用(:num),因为(:id)本来就是(:num)的意思,而且它在文档中是“遗留的”。。。我正在添加bug报告,我看到了上面的注释。我想知道为什么它不起作用。版本中仍然存在一些bug。你推荐它用于生产吗?我正在做一个发布项目。到目前为止天气还不错。只需将(:id)更改为(:num)并完成它。。。我能理解为什么它被故意移除。它只是挂在文档中。我有点喜欢它,如果回到CI 3,我会有畏缩的攻击。另外,如果有任何错误,它们将被分类。你在发现“问题”方面做得很好:)我们今天都学到了一些新东西。如果你从来没有问过我,我就不会发现这些东西:)