我正在尝试向我的phabricator添加自定义应用程序。目前,我只以最简单的方式扩展PhabricatorApplication class,并将我的文件放在phabricator / src / extensions目录(as explained here)中。
这是我的简单应用程序代码:
<?php
final class MyApp extends PhabricatorApplication {
public function getName() {
return pht('MyApp');
}
public function getBaseURI() {
return '/MyApp/';
}
}
?>
我可以固定我的新应用程序,然后点击它,但问题是我找不到如何将它链接到另一个网页(例如myPhabricator.com/MyApp/MyCustomAppPage)
我知道Phabricator目前使用的是Javalin JS framework,它没有在任何地方记录,也很难用于新手。我怎样才能简单地将我的phabricator中新添加的“MyApp”按钮链接到一个简单的HTML页面,例如我的扩展目录。
我看到PhabricatorApplication class的getRoutes()方法,但不明白它是如何工作的。
感谢您的帮助
[编辑1]
我在你的第一个回答中告诉我:我查看了倒计时应用程序(以及所有UIExample应用程序)并开始使用我自己的应用程序。我开始了解事情是如何运作的,虽然我确实有一个我不明白的问题。
我创建了一个侧面导航栏,其中包含我创建的父类的所有不同子类,它扩展了AphrontView。 当我点击导航栏中的项目时,我的控制器似乎无法正常工作。 根据我的理解,应该发送一个请求,其中包含一个URIMap变量,这样我就可以知道在导航栏中点击了哪个项目。
但我的似乎总是空的:在我的控制器的handleRequestMethod中,第一行是$map = $request->getURIMap()
,但$ map总是空的。我无法知道用户在导航栏中点击了哪个项目。
首先,我想知道我是否以正确的方式做事。 如果是这样,那么在什么时候应该定义一个请求的URIMap?
非常感谢你的帮助,我希望你有时间再回答我的问题。
答案 0 :(得分:3)
路由说什么URL转到什么控制器。所以'/ myapp /'应该传递给一些MyAppHomeController.php文件。我们的代码组织得很好。您可以使用像Countdown这样的简单应用程序作为如何构建Phabricator应用程序的指南。
public function getRoutes() {
return array(
'/myapp/' => array(
'' => 'MyAppHomeController',
));
}