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

Phabricator自定义Gantt应用路由失效问题及开发教程咨询

解决Phabricator Gantt应用路由不生效的关键步骤

你已经基于uiexample搭好了基础应用框架,但路由没跑起来,大概率是漏掉了Phabricator应用注册和缓存刷新这些关键环节,按下面的步骤来排查:

1. 给你的应用创建扩展注册文件

Phabricator不会自动扫描到新应用,得在phabricator/src/extensions/目录下新增一个扩展文件,比如PhabricatorGanttApplicationExtension.php,内容如下:

<?php
final class PhabricatorGanttApplicationExtension extends PhabricatorApplicationExtension {
  public function getApplicationName() {
    return 'gantt';
  }

  public function getApplicationClass() {
    return 'PhabricatorGanttApplication';
  }
}

这个文件相当于给你的应用办了个“入场证”,告诉Phabricator系统有这么个应用存在。

2. 补全路由对应的控制器类

你在getRoutes里指定了PhabricatorGanttRenderController,但得确保这个控制器真的存在,而且放在正确的目录(建议放在phabricator/src/applications/gantt/controller/下)。给你个最基础的控制器示例:

<?php
final class PhabricatorGanttRenderController extends PhabricatorController {
  public function handleRequest(AphrontRequest $request) {
    // 先写个简单的响应测试路由是否生效
    $page = new AphrontWebpageResponse();
    $page->setContent('<h2>终于看到Gantt页面啦!</h2>');
    return $page;
  }
}

控制器必须继承PhabricatorController,并且实现handleRequest方法,这是Phabricator控制器的标准要求。

3. 强制清除Phabricator缓存

Phabricator会把应用配置、路由这些信息缓存起来,修改后必须清缓存才能生效。在项目根目录运行:

./bin/cache purge --all

如果只想清应用相关的缓存,也可以用更精准的命令:

./bin/cache purge --app gantt

4. 验证应用是否被正确加载

运行下面的命令,看看你的Gantt应用有没有出现在已加载应用列表里:

./bin/app list

如果列表里找不到gantt,那说明注册文件没写对或者放错位置了,得回头检查。

5. 再核对下路由定义

你的路由写法本身没毛病,但可以再确认下:

  • 根路径/gantt/会直接触发控制器
  • /gantt/view/{xxx}/这种带参数的路径,参数可以通过$request->getURIData('class')在控制器里获取

Phabricator应用开发的学习资源

Phabricator官方没有专门的“入门教程”,但自带的资源足够你上手:

  • 看源码里的phabricator/docs/ApplicationDevelopmentGuide.md,这是官方写的应用开发指南,从应用结构、路由到视图都有讲
  • 直接啃uiexample应用的源码,你已经用它当模板了,对比它的目录结构、扩展注册、控制器写法,几乎能覆盖所有基础场景
  • 用./bin/app help查看应用相关的命令说明,Phabricator的命令行工具能帮你做很多自动化的事

内容的提问来源于stack exchange,提问作者Radosław Andraszyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:44:04