You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Nette应用的URL格式为模块/动作形式?

解决Nette框架模块化URL格式问题

1. 调整路由配置

原路由没区分模块、Presenter和Action,才导致URL用点分隔。直接替换成带模块参数的路由规则:

// 替换原有路由代码
$router->addRoute('<module>/<presenter>/<action>[/<id>]', [
    'module' => 'Home',
    'presenter' => 'Home',
    'action' => 'default'
]);

要是需要支持直接访问域名跳首页,再加一条 fallback 路由:

// 可选:默认首页路由
$router->addRoute('', [
    'module' => 'Home',
    'presenter' => 'Home',
    'action' => 'default'
]);

2. 修正n:href调用格式

原来的n:href=":Home:Signout:default"开头带冒号,改成不带冒号的格式:

<a class="nav-link active" n:href="Home:Signout:default">Sign Out</a>

这样Nette会自动按新路由生成/home/signout/格式的链接。

3. 确认Presenter映射配置

你当前common.neon里的映射是对的,不用改:

*: App\Modules\*\Presenters\*Presenter

它会自动把Home:Signout解析成App\Modules\Home\Presenters\SignoutPresenter。

4. 清缓存

改完路由和配置后,一定要删掉Nette的缓存目录(一般是temp/cache),不然新配置不会生效。

做完这些,URL就会变成http://192.168.56.30/home/signin/的友好格式,访问和生成链接都正常。

内容的提问来源于stack exchange,提问作者Lawrence Cooke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:35:21