Предлагаю один простой эксперимент для всех, кто любит делать так:
public function onRun()
{
$this->page['items'] = \OctoClub\Tutorial\Models\Item::paginate($this->property('items'));
$this->page['categories'] = \OctoClub\Tutorial\Models\Category::get();
}
Делаем 2 простых компонента:
Компонент Test1.php
class Test1 extends ComponentBase
{
public $normalCategoryV1;
public function componentDetails()
{
return [
'name' => 'Test1 Component',
'description' => 'No description provided yet...'
];
}
public function defineProperties()
{
return [];
}
public function onRun()
{
$this->page['category'] = $this->getValue();
$this->normalCategoryV1 = $this->getValue();
}
public function normalCategoryV2()
{
return $this->getValue();
}
protected function getValue()
{
return 'category 1';
}
}
Вьюха первого компонента test1/default.htm
<p><b>Test 1 category:</b> {{ category }}</p>
<p><b>Test 1 normalCategoryV1:</b> {{ __SELF__.normalCategoryV1 }}</p>
<p><b>Test 1 normalCategoryV2:</b> {{ __SELF__.normalCategoryV2 }}</p>
Компонет Test2
class Test2 extends ComponentBase
{
public $normalCategoryV1;
public function componentDetails()
{
return [
'name' => 'Test2 Component',
'description' => 'No description provided yet...'
];
}
public function defineProperties()
{
return [];
}
public function onRun()
{
$this->page['category'] = $this->getValue();
$this->normalCategoryV1 = $this->getValue();
}
public function normalCategoryV2()
{
return $this->getValue();
}
protected function getValue()
{
return 'category 2';
}
}
Вьюха второго компонента test2/default.htm
<p><b>Test 2 category:</b> {{ category }}</p>
<p><b>Test 2 normalCategoryV1:</b> {{ __SELF__.normalCategoryV1 }}</p>
<p><b>Test 2 normalCategoryV2:</b> {{ __SELF__.normalCategoryV2 }}</p>
Кидаем оба компонента на страницу:
{% component 'myTest1' %}
<hr>
{% component 'myTest2' %}
и видим там вот это:
Test 1 category: category 2
Test 1 normalCategoryV1: category 1
Test 1 normalCategoryV2: category 1
-------------------------------------------------
Test 2 category: category 2
Test 2 normalCategoryV1: category 2
Test 2 normalCategoryV2: category 2
либо вот это (зависит от того, в каком порядке подключали компонент):
Test 2 category: category 1
Test 2 normalCategoryV1: category 2
Test 2 normalCategoryV2: category 2
-------------------------------------------------
Test 1 category: category 1
Test 1 normalCategoryV1: category 1
Test 1 normalCategoryV2: category 1
Не стоит слепо делать так, как написано в документации.