我正在尝试将自定义应用程序添加到我的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',
));
}