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



我有一个路由应该为锚标记生成一个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']);

我期待着像这样的

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

简短的答案是不支持(: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]+'
];

更改是添加"id">条目,该条目模仿的"um">

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

相关内容

  • 没有找到相关文章

最新更新