添加自定义噬菌体应用程序


Add custom Phabricator Application

我正在尝试将自定义应用程序添加到我的phabricator。目前,我只以最简单的方式扩展了PhabricatorApplication类,并将我的文件放在phabricator/src/extensions目录中(如此处所述)。

这是我的简单应用程序代码:

<?php
final class MyApp extends PhabricatorApplication {
  public function getName() {
    return pht('MyApp');
  }
 public function getBaseURI() {
     return '/MyApp/';
      }
    }
?>

我可以固定我的新应用程序,然后单击它,但问题是我找不到如何将其链接到另一个网页(例如 myPhabricator.com/MyApp/MyCustomAppPage

我知道Phabricator目前使用Javalin JS框架,它没有在任何地方记录,对于新手来说很难使用。例如,我如何简单地将我的phabricator中新添加的"MyApp"按钮链接到一个简单的HTML页面,该页面将位于我的扩展目录中。

我看到了PhabricatorApplication类的getRoutes()方法,但不明白它是如何工作的。

谢谢你的帮助

[编辑1]

按照您在第一个答案中告诉我的那样做了:我查看了倒计时应用程序(以及所有 UIExample 应用程序)并开始制作自己的应用程序。我开始掌握事情是如何运作的,尽管我确实有一个我不明白的问题。

创建了一个侧面导航栏,其中包含我创建的父类的所有不同子类,它扩展了AphrontView。问题是当我单击导航栏中的项目时,我的控制器似乎无法正常工作。据我了解,应该向它发送一个请求,其中包含某个 URIMap 变量,这将使我知道在导航栏中单击了哪个项目。

但是我的似乎总是空的:在我的控制器的handleRequestMethod中,第一行是$map = $request->getURIMap(),但$map总是空的。我无法知道用户在我的导航栏中单击了哪个项目。

首先,我想知道我做事的方式是否正确。如果是这样,应该在什么时候定义来自请求的 URIMap?

非常感谢您的帮助,希望您有时间再次回答我的问题。

路由表示哪些 URL 转到哪些控制器。所以'/myapp/'应该传递给某个MyAppHomeController.php文件。我们的代码组织得相当好。您可以使用像Countdown这样的简单应用程序作为如何构建Phabricator应用程序的指南。

public function getRoutes() {
  return array(
    '/myapp/' => array(
      '' => 'MyAppHomeController',
  ));
}