添加自定义Phabricator应用程序

时间:2016-02-18 02:19:07

标签: javascript php phabricator

我正在尝试向我的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?

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

1 个答案:

答案 0 :(得分:3)

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

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