XF 2.1 Расширение контроллера с помощью parent

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

ArtiOnMoon

Проверенные
Сообщения
64
Реакции
36
Баллы
715
Здравствуйте. Написал новый display location для user custom field, однако столкнулся с трудностью - контроллер требует определить $form, $userProfile. Я попробовал сделать это через parent и сработало, однако при отработке кода значения введённые в поля исчезают. Как мне определить $form и $userProfile через parent грамотно, чтобы после отработки значения не исчезали?

Код контроллера:
PHP:
class Account extends XFCP_Account
{
    protected function accountDetailsSaveProcess(\XF\Entity\User $visitor)
    {
        return parent::accountDetailsSaveProcess($visitor);
        $this->customFieldsSaveProcess($form, 'my_new_display_group', $userProfile);
       
    }
 
PHP:
protected function accountDetailsSaveProcess(\XF\Entity\User $visitor)
{
        return parent::accountDetailsSaveProcess($visitor);
        $this->customFieldsSaveProcess($form, 'my_new_display_group', $userProfile);
}
Это как? мы вернули функцию и завершили её выполнение и пытаемся выполнять код =).
Replace to
PHP:
protected function accountDetailsSaveProcess(\XF\Entity\User $visitor)
{
       $form = $this->formAction();
       /** @var \XF\Entity\UserProfile $userProfile */
       $userProfile = $visitor->getRelationOrDefault('Profile');
        $this->customFieldsSaveProcess($form, 'my_new_display_group', $userProfile);
        return parent::accountDetailsSaveProcess($visitor);
}
 
PHP:
protected function accountDetailsSaveProcess(\XF\Entity\User $visitor)
{
        return parent::accountDetailsSaveProcess($visitor);
        $this->customFieldsSaveProcess($form, 'my_new_display_group', $userProfile);
}
Это как? мы вернули функцию и завершили её выполнение и пытаемся выполнять код =).
Replace to
PHP:
protected function accountDetailsSaveProcess(\XF\Entity\User $visitor)
{
       $form = $this->formAction();
       /** @var \XF\Entity\UserProfile $userProfile */
       $userProfile = $visitor->getRelationOrDefault('Profile');
        $this->customFieldsSaveProcess($form, 'my_new_display_group', $userProfile);
        return parent::accountDetailsSaveProcess($visitor);
}


Отрабатывает так же со сбросом поля. Нда. Но прогресс теперь $form и $userProfile явно определены.

PHP:
class Account extends XFCP_Account
{
    protected function accountDetailsSaveProcess(\XF\Entity\User $visitor)
        {
        $form = parent::accountDetailsSaveProcess($visitor);
        $userProfile = $visitor->getRelationOrDefault('Profile');
        $this->customFieldsSaveProcess($form, 'my_new_display_group', $userProfile, true);

    return $form;
        }
}
Нашёл решение
 
Последнее редактирование модератором:
Это как? мы вернули функцию и завершили её выполнение и пытаемся выполнять код =).
Нормальная IDE подсветит, что тут что-то не так, по крайней мере PhpStorm с плагином Php Inspections
 
Статус
В этой теме нельзя размещать новые ответы.
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу