Я, конечно же, пытаюсь переместить мой сайт на Hack и XHP. Ниже приведена структура какой структуры кода я хочу добиться:Получите детей от XHPChild
<ui:backstageHeader>
<ui:backstageHeader-navItem href="/">stories</ui:backstageHeader-navItem>
<ui:backstageHeader-navItem href="/story/send">send a story</ui:backstageHeader-navItem>
<ui:backstageHeader-navItem href="/aboutus">support</ui:backstageHeader-navItem>
</ui:backstageHeader>
(Примечание::ui:backstageHeader-navItem
в основном оказывает <a href={$this->:href}>{$this->getCHildren}</a>
поэтому не нужно прикрепить его класс здесь.)
Ниже приведен код для :ui:backstageHeader
:
final class :ui:backstageHeader extends :ui:base {
attribute :div;
children (:ui:backstageHeader-navItem)*;
protected function compose() {
$dom =
<section class="backstage-header">
<div class="container">
<div class="cell-logo">
<a href="/">
<span class="no23-logo-white"></span>
</a>
</div>
<div class="cell-navigation">
</div>
<div class="cell-account">
<div class="cell-login">
<div id="siteNav-login">Autentificare</div>
</div>
</div>
</div>
</section>;
$mainContainer = $dom->getChildren("div")[0];
$cellNavigation = $mainContainer->getChildren("div")[1];
$navItems = <ul class="main-navigation"></ul>;
foreach($this->getChildren() as $child) {
$navItems->appendChild(<li>{$child}</li>);
}
$dom->appendChild($navItems);
return $dom;
}
}
Я использовал терминал для отладки моего кода, используя hhvm -m d <file.php>
, и все было хорошо там; однако, когда я добираюсь до своего браузера, я получаю 500
заголовок ошибки. Это то, что говорит журнал:
Catchable fatal error: Hack type error: Could not find method getChildren in an object of type XHPChild at /var/www/res/ui/backstage-header.php line 25
ошибка происходит от
$cellNavigation = $mainContainer->getChildren("div")[1];
Но, так или иначе, мне нужно добавить ul.main-navigation
к div.cell-navigation
от моего section.backstage-header
.
Как я могу это сделать?