• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

XF 2.0 Dedicated account page for Personal Fields

abdfahim

Active member
#1
In XF1, if we want to display certain custom fields in a page, I just return the corresponding fields. For example, in account/personal-details page, the actionPersonalDetails only returns the UserFileds with display_group = 'personal'.

Code:
public function actionPersonalDetails()
    {
        ...............................

        $customFields = $this->_getFieldModel()->getUserFields(
            array('display_group' => 'personal'),
            array('valueUserId' => $visitor['user_id'])
        );

        .............................
    }
But, when I was trying to inspect the same in XF2, it seems like the actionAccountDetails() function returns all data, and the filtering is done inside the template.

Code:
public function actionAccountDetails()
    {
            $view = $this->view('XF:Account\AccountDetails', 'account_details');
            return $this->addAccountWrapperParams($view, 'account_details');
    }
So, if I want to create a dedicated page for, say, all the custom fields with display_group = 'personal', should I go in the same way? I thought if I could return only the respective fields, it would be more optimized.

PHP:
public function actionPersonal()
    {
        if ($this->isPost())
        {
            $visitor = \XF::visitor();

            if ($visitor->canEditProfile())
            {
                $this->personalSaveProcess($visitor)->run();
            }

            return $this->redirect($this->buildLink('account/personal'));
        }
        else
        {
            $view = $this->view('XF:Account\Personal', 'abdfahim_account_personal');
            return $this->addAccountWrapperParams($view, 'abdfahim_account_personal');
        }
}
 

Chris D

XenForo developer
Staff member
#2
There's not really any optimisation. The bulk of the interaction with custom fields comes from an object created in the UserProfile entity using the custom_fields cache in the xf_user_profile table.

So, yes, follow a similar approach to XF2.