0

我有一条应该为锚标记生成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

4

1 回答 1

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) 会更安全

于 2020-04-26T15:26:16.930 回答