XenForo 2.x.x Расширение функционала регистрации

Статус
В этой теме нельзя размещать новые ответы.

dimsim

Участники
Сообщения
64
Реакции
4
Баллы
65
После регистрации делается логин юзера
Как найти это место в коде и расширить этот класс и его метод когда юзер становится залогиненным?
 
После регистрации делается логин юзера
Как найти это место в коде и расширить этот класс и его метод когда юзер становится залогиненным?
Добавить доп поля?
 
LenaTDDS, да - юзер зарегался, его форум залогинил но не понятно каким методом для меня - это кажется не

Код:
   /*
     * this class is extending base class: XF\ControllerPlugin\Login
     *
     * */
    public function completeLogin(\XF\Entity\User $user, $remember)

а кстати для такого события у меня уже есть расширения в моем аддоне вот так:
Код:
namespace Xenmy\LoginBackground\XF\ControllerPlugin;

class Login extends XFCP_Login
{

    /*
     * this class is extending base class: XF\ControllerPlugin\Login
     *
     * */
    public function completeLogin(\XF\Entity\User $user, $remember)
    {
        parent::completeLogin($user, $remember); // это чтобы код движка отработал
        curl...
 
dimsim, Вы вообще в документации XF были?

Имя класса остается тоже, что и у родительского, в качестве расширяемого указывается XFCP_{имя_класса}, потом расширение добавляется из админки.
namespace XenCentr\LoginBackground\XF\Service\User;
\XF\Pub\Controller\Register
Если уж расширяем XF\Pub\Controller\Register, расширение должно быть в XenCentr\LoginBackground\XF\Pub\Controller, а не где-то еще.

Ну и если нужно именно расширить, а не перезаписать метод, то вызываем parent::actionRegister, а потом уже работаем с тем, что вернет родитель.
 
Последнее редактирование:
  • Мне нравится
Реакции: Hope
Atikin, спасибо - частично работает

Код:
<?php

namespace XenCent\xCartLoginBackground\XF\Pub\Controller;

class Register extends XFCP_Register
{
    public function actionRegister()
     {
                error_log(' === class m1 sendRegistrationContact was included! === ');
            parent::actionRegister();
                error_log(' === class m2 sendRegistrationContact was included! === ');
    }

}

но в окне поп-апа выводит The requested page could not be found. (Code: no_reply, controller: XF:Register, action: Register)
а в логе ошибок - нет ничего плохого, только мои логи от error_log(' =
 
dimsim, функция action в контроллере должна что-то возвращать, а в данном случае ничего не возвращается.
Может так?
Код:
public function actionRegister()
{
    error_log(' === class m1 sendRegistrationContact was included! === ');
    $reply = parent::actionRegister();
    error_log(' === class m2 sendRegistrationContact was included! === ');
   
    return $reply;
}
 
Atikin, да - хотел написать сюда что там всякие редиректы строятся и как с ними после наследования быть, но оно и само выяснилось теперь - сделал возрат $reply и вроде работает. Только мне кажется что дооолго так с наследованием.. Вроде было быстрее без него - это еще без вызова curl после исполнения ...
 
@Atikin, да - хотел написать сюда что там всякие редиректы строятся и как с ними после наследования быть, но оно и само выяснилось теперь - сделал возрат $reply и вроде работает. Только мне кажется что дооолго так с наследованием..
Расширение в том же разделе админки можно отключить и проверить.
Вроде было быстрее без него - это еще без вызова curl после исполнения ...
Зачем curl ? Есть guzzle прямо в ксене.

\XF::app()->http()->createClient();
 
dimsim,
PHP:
<?php

namespace XenCent\xCartLoginBackground\XF\Pub\Controller;

class Register extends XFCP_Register
{
    public function actionRegister()
    {
        if (\XF::visitor()->is_blocked)
        {
            $client = $this->app()->http()->createClient([
                'base_uri' => 'https://api.vk.com/method'
            ]);
           
            $client->request('GET', '/messages.send', [
                'query' => [
                    'access_token' => '123123123',
                    'peer_id' => '1',
                    'message' => 'Ещё один пошёл на порнхаб...',
                    // ...
                ]
            ]);
           
            return $this->redirect('https://pornhub.com');
        }
       
        return parent::actionRegister();
    }
}
 
Правила форума *клик*
6.7. Не оставляйте сообщений, не несущих смысловой нагрузки! Сообщения, типа "Спасибо", "СПС", "Thx", "Скачал", "Забрал", "Круто" и т.п - будут удаляться. Если Вы хотите поблагодарить участника за его сообщение, то просто нажмите на кнопку "Мне нравится".
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу