XF 2.0 Dedicated account page for Personal Fields


Active member
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'.

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.

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.

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

            if ($visitor->canEditProfile())

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

Chris D

XenForo developer
Staff member
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.