443
Допустим у вас появилась задача похожую на мою. Мне было необходимо подделать метод onActivate.
Соответсвенно, если мы сделаем это напрямую в плагине в классе Account, то через последующее обновление наши изменения сотрутся.
Поэтому мы идем следующем путем.
У нас есть компонент login.htm. Изначально он использует компонент Account.php Rainlab.
title = "Вход"
url = "/login"
layout = "default"
[account]
forceSecure = 0
==
<main class="page__main">
{% partial 'user_account/singin' %}
</main>
Допустим у вас Плагин Myplugin. В нем мы создадим свой Аккаунт компонент и отнаследуем от Rainlab.
<?php namespace Alexti\Myplugin\Components;
class Account2 extends \RainLab\User\Components\Account
{
public function componentDetails()
{
return [
'name' => 'Account2',
'description' => 'Account2'
];
}
/**
* Activate the user
* @param string $code Activation code
*/
public function onActivate($code = null)
{
// do something
}
}
Соответсвенно наш компонент надо зарегистрировать в Plugin.php
public function registerComponents()
{
return [
'Alexti\Myplugin\Components\Account2' => 'Account2',
]
}
Все готово. Теперь Account будет отрабатывать как обычно, но методы которые мы заоверайдили будут отрабатывать в нашем компоненте. И соответсвенно по всех шаблонах необходимо подключить наш компонент.
title = "Вход"
url = "/login"
layout = "default"
[Account2]
forceSecure = 0
==
<main class="page__main">
{% partial 'user_account/singin' %}
</main>
0