我有一个路由应该为锚标记生成一个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(会安全得多