2016-02-18 6 views
0

Я пытаюсь добавить настраиваемое приложение к своему фабрикатору. На данный момент я только расширил PhabricatorApplication class самый простой способ, которым мог, и сбросил мой файл в каталоге phabricator/src/extensions (as explained here).Добавить пользовательское приложение Phabricator

Вот мой простой код приложения:

<?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, что он нигде не документированы, и трудно использовать для новичков. Как я могу просто связать недавно добавленную кнопку «MyApp» в моем фабрикаторе с простой HTML-страницей, которая будет, например, в моем каталоге расширений.

Я видел метод getRoutes() PhabricatorApplication class, но не понял, как он работает.

Спасибо за вашу помощь

[EDIT 1]

Я сделал, как вы сказали мне в первый ответ: я посмотрел на применение обратного отсчета (и все приложение UIExample) и начал делать мои собственные приложение. Я начинаю понимать, как все работает, хотя у меня есть одна проблема, которую я не понимаю.

Я создал боковую навигационную панель со всеми различными подклассами родительского класса, которые я создал, что расширяет AphrontView. Дело в том, что мой контроллер, похоже, не работает правильно, когда я нажимаю элементы на панели навигации. Из того, что я понял, должен быть отправлен запрос с некоторой переменной URIMap, которая позволит мне узнать, какой элемент был нажат на панели навигации.

Но мой, кажется, всегда пуст: в моем методе handleRequestMethod от моего контроллера первая строка $map = $request->getURIMap(), но $ map всегда пуста. У меня нет способа узнать, какой элемент был нажат пользователем, в моей навигационной панели.

Прежде всего, я хотел бы знать, правильно ли я делаю вещи. Если да, то в какой момент URIMap из запроса, который должен быть определен?

Благодарим вас за помощь, надеюсь, у вас будет время ответить на мой вопрос еще раз.

ответ

3

Маршруты говорят, какие URL-адреса идут на какие контроллеры. Поэтому '/ myapp /' должен перейти в файл MyAppHomeController.php. Наш код довольно хорошо организован. Вы можете использовать простое приложение, например Countdown, в качестве руководства по созданию приложения Phabricator.

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

Спасибо за ваш ответ, прошу прощения за поздний ответ, но я работал над этим. Я отредактировал мой вопрос, для более подробной информации .. – ypicard

Смежные вопросы