在 OctoberCMS 的 PHP 部分访问部分组件

Access partial's components in PHP section in OctoberCMS

我需要访问和修改我在其自己的 PHP 部分中部分加载的组件。

通常我在页面中加载组件,我可以使用 PHP 部分中的 $this->page->components['exampleComponent'] 访问它们。 但是,当组件以部分方式加载时,它就不存在了。

我试过 onStart 和 onEnd 来测试它是否由于十月的生命周期,但它们从未添加到页面组件中。

那我怎样才能访问它?

description = "Sample Partial"

[someComponent exampleComponent]
code = "header-menu"

==
<?php
function onStart(){

   // Need to access partial's component here
   $exampleComponent = ??? 
}
?>
==

你可以使用 controller object 因为它管理 partial stack

In docs they mentioned that partial has different life-cycle then pages so may be that is the reason it's components are not in page object

控制器 findComponentByName('component-name') 中有方便的方法从 page or partial

中搜索组件

因此您可以使用 below code 来获取您的组件。

description = "Sample Partial"

[someComponent exampleComponent]
code = "header-menu"

==
<?php
function onStart(){
   // Need to access partial's component here 
   $exampleComponent = $this->controller->findComponentByName('exampleComponent');
   //           USE controller obj ^ and this method ^
}
?>

应该可以。

如有疑问请评论。