【问题标题】:codeigniter 4 routing named routes generates no hrefcodeigniter 4 路由命名路由不生成href
【发布时间】:2020-04-26 01:37:48
【问题描述】:

我有一个应该为锚标记生成 href 的路由,但我没有得到 href:

<a href="" style="color:white !important" class="btn btn-info postlist">Update</a>

我上面的代码是:

data[i]["confirm"] = '<a href="<?=route_to('updatePost', 1) ?>" style="color:white !important" class="btn btn-info postlist">Update</a>';

我的路线是:

//$routes->add('post/(:id)', 'App/Controllers/Post::updatepost/$1');
$routes->add('post/(:id)', 'Post::updatepost/$1', ['as' => 'updatePost']);

我期待类似this

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

【问题讨论】:

  • 即使他们的例子(有错字)也不起作用。似乎在您添加 (:id) 和朋友的那一刻,它会引发错误。我必须深入研究代码,但我现在有点忙。如果你让它像 /post 一样简单,那就行了
  • (:any) 有效。你试过了吗,是的,我还没有完全放弃:)
  • 请注意您对 data[i]["confirm"] = "link code" 的使用非常确定。那是 $data[$i]['confirm'] 吗?
  • @TimBrownlaw 我在这里学习特别是路由,我需要在这方面进行改进。至于索引它的i 不是$i.. 我没有尝试过这个但会尝试这个我需要专注于另一个答案:)

标签: routes href codeigniter-4 named-routing


【解决方案1】:

简短的回答是 (:id) 不受支持。它已被弃用,支持使用 (:num)

所以快速解决方法是使用 (:num) 而不是 (:id)

是一样的。

如果您真的真的需要,临时修复是更改核心文件。

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

在文件 /system/Router/RouteCollection.php - LINE 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]+'
];

更改是添加了模仿 'num''id' 条目。

将所有对 (:id) 的引用更改为 (:num) 会更安全

【讨论】:

  • 我明白了.. 它就像 :id 是一个保留词?或类似的东西?我没有那样想。一旦我完成另一个,我会尝试这个:) 快乐的编码伙伴.. 你是一个很大的帮助,我很感激
  • 我认为它已被弃用,有利于使用 (:num) ,因为它是 (:id) 的意思,并且它在文档中是“剩余的”......我正在添加我们说话时的错误报告。
  • 我看到了这个。我想知道为什么它不起作用。版本中仍然存在一些错误。你推荐它用于生产吗?
  • 我正在开发一个发布项目。到目前为止一切都很好。只需将 (:id) 更改为 (:num) 并完成它......我可以看到为什么它被故意删除了。它只是挂在文档中。我有点喜欢它,并且会在 CI 3 上进行畏缩攻击。另外,如果有任何错误 - 它们会被排序。你在发现“问题”方面做得很好:)
  • 今天我们都学到了一些新东西。如果你从不问我就不会发现这些东西了:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-02
  • 2018-02-10
  • 2013-07-07
  • 2023-03-11
  • 1970-01-01
  • 2022-08-05
  • 1970-01-01
相关资源
最近更新 更多