在 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 ^
}
?>
应该可以。
如有疑问请评论。
我需要访问和修改我在其自己的 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 inpage
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 ^
}
?>
应该可以。
如有疑问请评论。