Joomla Components, modules & MVC changes: Joomla 3 → 4, 5 and 6

28 issues in this guide

Components and modules share the MVC rename map. This guide groups 28 entries: FOFModel / FOFTable, JCategories, JCategoryNode, JComponentHelper, JControllerAdmin, JControllerForm, JControllerLegacy, JHelper, JHelperContent, JHelperTags, and 18 more. The replacement pattern is the Joomla\CMS\MVC\* tree — BaseController, AdminController, FormController, ListModel, AdminModel, FormModel, HtmlView — plus ComponentHelper and ModuleHelper. getInstance() string factories give way to MVCFactory / $this->getModel(). assignRef disappears; assign public view properties. setError / getError become exceptions. FOF2 is not in Joomla 4 core; upgrade the library or rewrite. Hop mix: 4 at Joomla 3 → 4; 24 at Joomla 5 → 6. Work one MVC layer at a time on staging: controllers and models first, then views and helpers, using each entry's before/after as the checklist from the catalog. Catalog replacements in this guide include FOFModel / FOFTable → FOF 3 / native Joomla MVC; JCategories → Joomla\CMS\Categories\Categories; JCategoryNode → Joomla\CMS\Categories\CategoryNode; JComponentHelper → Joomla\CMS\Component\ComponentHelper. Open each h2 anchor for the full before/after, fix list, and error strings shipped in the reference data.

FOF2-001

FOFModel / FOFTable

FOF 2.x in core

Framework-on-Framework 2 shipped with some J3 stacks and is not in Joomla 4 core.

FOFModel / FOFTable → FOF 3 / native Joomla MVC

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Architecture change — no auto-fixMVC

What you will see

  • Class "FOFModel" not found
  • Class "FOFTable" not found

Symptoms people search

Akeeba/FOF component 500 · FOFModel

Replace this code

Swap FOFModel / FOFTable for FOF 3 / native Joomla MVC.

Joomla 3

Remove or stop calling this

class LmsModelCourses extends FOFModel {}

Joomla 4 / 6

Use this instead

Port to FOF 3 or to namespaced ListModel/AdminModel. FOF 2 is not in Joomla 4.

How to fix it

  1. 1Upgrade the FOF library to a J4+ release or rewrite MVC.

Also known as

FOF · FOFModel · FOFTable · FOFForm

There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.

JCATEGORIES-CLASS-001

JCategories

JCategories class name

JCategories is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCategories" not found.

JCategories → Joomla\CMS\Categories\Categories

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JCategories" not found
  • Class 'JCategories' not found
  • Failed to open stream: JCategories

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JCategories for Joomla\CMS\Categories\Categories.

Joomla 3

Remove or stop calling this

JCategories::getInstance();
// or new JCategories()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Categories\Categories;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Categories\Categories.
  2. 2Replace every JCategories with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JCategories · Joomla\CMS\Categories\Categories · class alias · J prefix

JCATEGORYNODE-CLASS-001

JCategoryNode

JCategoryNode class name

JCategoryNode is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JCategoryNode" not found.

JCategoryNode → Joomla\CMS\Categories\CategoryNode

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JCategoryNode" not found
  • Class 'JCategoryNode' not found
  • Failed to open stream: JCategoryNode

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JCategoryNode for Joomla\CMS\Categories\CategoryNode.

Joomla 3

Remove or stop calling this

JCategoryNode::getInstance();
// or new JCategoryNode()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Categories\CategoryNode;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Categories\CategoryNode.
  2. 2Replace every JCategoryNode with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JCategoryNode · Joomla\CMS\Categories\CategoryNode · class alias · J prefix

JCOMPONENTHELPER-CLASS-001

JComponentHelper

JComponentHelper class name

JComponentHelper is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JComponentHelper" not found.

JComponentHelper → Joomla\CMS\Component\ComponentHelper

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JComponentHelper" not found
  • Class 'JComponentHelper' not found
  • Failed to open stream: JComponentHelper

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JComponentHelper for Joomla\CMS\Component\ComponentHelper.

Joomla 3

Remove or stop calling this

JComponentHelper::getInstance();
// or new JComponentHelper()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Component\ComponentHelper;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Component\ComponentHelper.
  2. 2Replace every JComponentHelper with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JComponentHelper · Joomla\CMS\Component\ComponentHelper · class alias · J prefix

JCONTROLLERADMIN-CLASS-001

JControllerAdmin

JControllerAdmin class name

JControllerAdmin is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JControllerAdmin" not found.

JControllerAdmin → Joomla\CMS\MVC\Controller\AdminController

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JControllerAdmin" not found
  • Class 'JControllerAdmin' not found
  • Failed to open stream: JControllerAdmin

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JControllerAdmin for Joomla\CMS\MVC\Controller\AdminController.

Joomla 3

Remove or stop calling this

JControllerAdmin::getInstance();
// or new JControllerAdmin()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Controller\AdminController;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Controller\AdminController.
  2. 2Replace every JControllerAdmin with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JControllerAdmin · Joomla\CMS\MVC\Controller\AdminController · class alias · J prefix

JCONTROLLERFORM-CLASS-001

JControllerForm

JControllerForm class name

JControllerForm is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JControllerForm" not found.

JControllerForm → Joomla\CMS\MVC\Controller\FormController

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JControllerForm" not found
  • Class 'JControllerForm' not found
  • Failed to open stream: JControllerForm

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JControllerForm for Joomla\CMS\MVC\Controller\FormController.

Joomla 3

Remove or stop calling this

JControllerForm::getInstance();
// or new JControllerForm()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Controller\FormController;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Controller\FormController.
  2. 2Replace every JControllerForm with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JControllerForm · Joomla\CMS\MVC\Controller\FormController · class alias · J prefix

JCONTROLLERLEGACY-CLASS-001

JControllerLegacy

JControllerLegacy class name

JControllerLegacy is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JControllerLegacy" not found.

JControllerLegacy → Joomla\CMS\MVC\Controller\BaseController

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JControllerLegacy" not found
  • Class 'JControllerLegacy' not found
  • Failed to open stream: JControllerLegacy

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JControllerLegacy for Joomla\CMS\MVC\Controller\BaseController.

Joomla 3

Remove or stop calling this

JControllerLegacy::getInstance();
// or new JControllerLegacy()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Controller\BaseController;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Controller\BaseController.
  2. 2Replace every JControllerLegacy with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JControllerLegacy · Joomla\CMS\MVC\Controller\BaseController · class alias · J prefix

JHELPER-CLASS-001

JHelper

JHelper class name

JHelper is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JHelper" not found.

JHelper → Joomla\CMS\Helper\CMSHelper

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JHelper" not found
  • Class 'JHelper' not found
  • Failed to open stream: JHelper

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JHelper for Joomla\CMS\Helper\CMSHelper.

Joomla 3

Remove or stop calling this

JHelper::getInstance();
// or new JHelper()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Helper\CMSHelper;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Helper\CMSHelper.
  2. 2Replace every JHelper with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JHelper · Joomla\CMS\Helper\CMSHelper · class alias · J prefix

JHELPERCONTENT-CLASS-001

JHelperContent

JHelperContent class name

JHelperContent is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JHelperContent" not found.

JHelperContent → Joomla\CMS\Helper\ContentHelper

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JHelperContent" not found
  • Class 'JHelperContent' not found
  • Failed to open stream: JHelperContent

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JHelperContent for Joomla\CMS\Helper\ContentHelper.

Joomla 3

Remove or stop calling this

JHelperContent::getInstance();
// or new JHelperContent()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Helper\ContentHelper;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Helper\ContentHelper.
  2. 2Replace every JHelperContent with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JHelperContent · Joomla\CMS\Helper\ContentHelper · class alias · J prefix

JHELPERTAGS-CLASS-001

JHelperTags

JHelperTags class name

JHelperTags is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JHelperTags" not found.

JHelperTags → Joomla\CMS\Helper\TagsHelper

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JHelperTags" not found
  • Class 'JHelperTags' not found
  • Failed to open stream: JHelperTags

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JHelperTags for Joomla\CMS\Helper\TagsHelper.

Joomla 3

Remove or stop calling this

JHelperTags::getInstance();
// or new JHelperTags()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Helper\TagsHelper;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Helper\TagsHelper.
  2. 2Replace every JHelperTags with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JHelperTags · Joomla\CMS\Helper\TagsHelper · class alias · J prefix

JMODELADMIN-CLASS-001

JModelAdmin

JModelAdmin class name

JModelAdmin is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JModelAdmin" not found.

JModelAdmin → Joomla\CMS\MVC\Model\AdminModel

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JModelAdmin" not found
  • Class 'JModelAdmin' not found
  • Failed to open stream: JModelAdmin

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JModelAdmin for Joomla\CMS\MVC\Model\AdminModel.

Joomla 3

Remove or stop calling this

JModelAdmin::getInstance();
// or new JModelAdmin()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Model\AdminModel;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Model\AdminModel.
  2. 2Replace every JModelAdmin with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JModelAdmin · Joomla\CMS\MVC\Model\AdminModel · class alias · J prefix

JMODELFORM-CLASS-001

JModelForm

JModelForm class name

JModelForm is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JModelForm" not found.

JModelForm → Joomla\CMS\MVC\Model\FormModel

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JModelForm" not found
  • Class 'JModelForm' not found
  • Failed to open stream: JModelForm

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JModelForm for Joomla\CMS\MVC\Model\FormModel.

Joomla 3

Remove or stop calling this

JModelForm::getInstance();
// or new JModelForm()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Model\FormModel;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Model\FormModel.
  2. 2Replace every JModelForm with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JModelForm · Joomla\CMS\MVC\Model\FormModel · class alias · J prefix

JMODELITEM-CLASS-001

JModelItem

JModelItem class name

JModelItem is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JModelItem" not found.

JModelItem → Joomla\CMS\MVC\Model\ItemModel

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JModelItem" not found
  • Class 'JModelItem' not found
  • Failed to open stream: JModelItem

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JModelItem for Joomla\CMS\MVC\Model\ItemModel.

Joomla 3

Remove or stop calling this

JModelItem::getInstance();
// or new JModelItem()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Model\ItemModel;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Model\ItemModel.
  2. 2Replace every JModelItem with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JModelItem · Joomla\CMS\MVC\Model\ItemModel · class alias · J prefix

JMODELLEGACY-CLASS-001

JModelLegacy

JModelLegacy class name

JModelLegacy is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JModelLegacy" not found.

JModelLegacy → Joomla\CMS\MVC\Model\BaseDatabaseModel

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JModelLegacy" not found
  • Class 'JModelLegacy' not found
  • Failed to open stream: JModelLegacy

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JModelLegacy for Joomla\CMS\MVC\Model\BaseDatabaseModel.

Joomla 3

Remove or stop calling this

JModelLegacy::getInstance();
// or new JModelLegacy()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Model\BaseDatabaseModel;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Model\BaseDatabaseModel.
  2. 2Replace every JModelLegacy with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JModelLegacy · Joomla\CMS\MVC\Model\BaseDatabaseModel · class alias · J prefix

JMODELLIST-CLASS-001

JModelList

JModelList class name

JModelList is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JModelList" not found.

JModelList → Joomla\CMS\MVC\Model\ListModel

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JModelList" not found
  • Class 'JModelList' not found
  • Failed to open stream: JModelList

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JModelList for Joomla\CMS\MVC\Model\ListModel.

Joomla 3

Remove or stop calling this

JModelList::getInstance();
// or new JModelList()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\Model\ListModel;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\Model\ListModel.
  2. 2Replace every JModelList with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JModelList · Joomla\CMS\MVC\Model\ListModel · class alias · J prefix

JMODULEHELPER-CLASS-001

JModuleHelper

JModuleHelper class name

JModuleHelper is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JModuleHelper" not found.

JModuleHelper → Joomla\CMS\Helper\ModuleHelper

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JModuleHelper" not found
  • Class 'JModuleHelper' not found
  • Failed to open stream: JModuleHelper

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JModuleHelper for Joomla\CMS\Helper\ModuleHelper.

Joomla 3

Remove or stop calling this

JModuleHelper::getInstance();
// or new JModuleHelper()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Helper\ModuleHelper;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Helper\ModuleHelper.
  2. 2Replace every JModuleHelper with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JModuleHelper · Joomla\CMS\Helper\ModuleHelper · class alias · J prefix

JPAGINATION-CLASS-001

JPagination

JPagination class name

JPagination is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JPagination" not found.

JPagination → Joomla\CMS\Pagination\Pagination

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JPagination" not found
  • Class 'JPagination' not found
  • Failed to open stream: JPagination

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JPagination for Joomla\CMS\Pagination\Pagination.

Joomla 3

Remove or stop calling this

JPagination::getInstance();
// or new JPagination()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Pagination\Pagination;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Pagination\Pagination.
  2. 2Replace every JPagination with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JPagination · Joomla\CMS\Pagination\Pagination · class alias · J prefix

JPAGINATIONOBJECT-CLASS-001

JPaginationObject

JPaginationObject class name

JPaginationObject is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JPaginationObject" not found.

JPaginationObject → Joomla\CMS\Pagination\PaginationObject

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JPaginationObject" not found
  • Class 'JPaginationObject' not found
  • Failed to open stream: JPaginationObject

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JPaginationObject for Joomla\CMS\Pagination\PaginationObject.

Joomla 3

Remove or stop calling this

JPaginationObject::getInstance();
// or new JPaginationObject()

Joomla 4 / 6

Use this instead

use Joomla\CMS\Pagination\PaginationObject;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\Pagination\PaginationObject.
  2. 2Replace every JPaginationObject with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JPaginationObject · Joomla\CMS\Pagination\PaginationObject · class alias · J prefix

JUCM-CLASS-001

JUcmType

JUcmType class name

JUcmType is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JUcmType" not found.

JUcmType → Joomla\CMS\UCM\UCMType

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JUcmType" not found
  • Class 'JUcmType' not found
  • Failed to open stream: JUcmType

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JUcmType for Joomla\CMS\UCM\UCMType.

Joomla 3

Remove or stop calling this

JUcmType::getInstance();
// or new JUcmType()

Joomla 4 / 6

Use this instead

use Joomla\CMS\UCM\UCMType;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\UCM\UCMType.
  2. 2Replace every JUcmType with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JUcmType · Joomla\CMS\UCM\UCMType · class alias · J prefix · JUcm

JUCMBASE-CLASS-001

JUcmBase

JUcmBase class name

JUcmBase is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JUcmBase" not found.

JUcmBase → Joomla\CMS\UCM\UCMBase

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JUcmBase" not found
  • Class 'JUcmBase' not found
  • Failed to open stream: JUcmBase

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JUcmBase for Joomla\CMS\UCM\UCMBase.

Joomla 3

Remove or stop calling this

JUcmBase::getInstance();
// or new JUcmBase()

Joomla 4 / 6

Use this instead

use Joomla\CMS\UCM\UCMBase;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\UCM\UCMBase.
  2. 2Replace every JUcmBase with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JUcmBase · Joomla\CMS\UCM\UCMBase · class alias · J prefix

JUCMCONTENT-CLASS-001

JUcmContent

JUcmContent class name

JUcmContent is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JUcmContent" not found.

JUcmContent → Joomla\CMS\UCM\UCMContent

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameJoomla API

What you will see

  • Class "JUcmContent" not found
  • Class 'JUcmContent' not found
  • Failed to open stream: JUcmContent

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JUcmContent for Joomla\CMS\UCM\UCMContent.

Joomla 3

Remove or stop calling this

JUcmContent::getInstance();
// or new JUcmContent()

Joomla 4 / 6

Use this instead

use Joomla\CMS\UCM\UCMContent;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\UCM\UCMContent.
  2. 2Replace every JUcmContent with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JUcmContent · Joomla\CMS\UCM\UCMContent · class alias · J prefix

JVIEWCATEGORIES-CLASS-001

JViewCategories

JViewCategories class name

JViewCategories is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JViewCategories" not found.

JViewCategories → Joomla\CMS\MVC\View\CategoriesView

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JViewCategories" not found
  • Class 'JViewCategories' not found
  • Failed to open stream: JViewCategories

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JViewCategories for Joomla\CMS\MVC\View\CategoriesView.

Joomla 3

Remove or stop calling this

JViewCategories::getInstance();
// or new JViewCategories()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\View\CategoriesView;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\View\CategoriesView.
  2. 2Replace every JViewCategories with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JViewCategories · Joomla\CMS\MVC\View\CategoriesView · class alias · J prefix

JVIEWCATEGORY-CLASS-001

JViewCategory

JViewCategory class name

JViewCategory is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JViewCategory" not found.

JViewCategory → Joomla\CMS\MVC\View\CategoryView

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JViewCategory" not found
  • Class 'JViewCategory' not found
  • Failed to open stream: JViewCategory

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JViewCategory for Joomla\CMS\MVC\View\CategoryView.

Joomla 3

Remove or stop calling this

JViewCategory::getInstance();
// or new JViewCategory()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\View\CategoryView;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\View\CategoryView.
  2. 2Replace every JViewCategory with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JViewCategory · Joomla\CMS\MVC\View\CategoryView · class alias · J prefix

JVIEWLEGACY-CLASS-001

JViewLegacy

JViewLegacy class name

JViewLegacy is a Joomla 3 global class. Joomla 4 still has an alias. Joomla 5 needs the Behaviour – Backward Compatibility plugin. Native Joomla 6 does not load that alias — you get Class "JViewLegacy" not found.

JViewLegacy → Joomla\CMS\MVC\View\HtmlView

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Alias (old name still resolves)J6: Removed — fatalBC plugin: covers the class nameMechanical renameMVC

What you will see

  • Class "JViewLegacy" not found
  • Class 'JViewLegacy' not found
  • Failed to open stream: JViewLegacy

Symptoms people search

white screen after disabling compatibility plugin · class not found on Joomla 6 · works on Joomla 5 until I turn off backward compatibility

Replace this code

Swap JViewLegacy for Joomla\CMS\MVC\View\HtmlView.

Joomla 3

Remove or stop calling this

JViewLegacy::getInstance();
// or new JViewLegacy()

Joomla 4 / 6

Use this instead

use Joomla\CMS\MVC\View\HtmlView;

// Call the namespaced class. Do not keep the J prefix.

How to fix it

  1. 1Add a use statement for Joomla\CMS\MVC\View\HtmlView.
  2. 2Replace every JViewLegacy with the short class name from that use line.
  3. 3Disable Behaviour – Backward Compatibility on a Joomla 5 staging site. If it fatals, this class is still in the code.

Also known as

JViewLegacy · Joomla\CMS\MVC\View\HtmlView · class alias · J prefix

MVC-ASSIGNREF-001

$this->assignRef('item', $item)

assignRef() on views

assignRef was a PHP 4 leftover. It does nothing useful on Joomla 4+.

$this->assignRef('item', $item) → $this->item = $item

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Mechanical renameMVC

What you will see

  • Call to undefined method ...::assignRef

Symptoms people search

view variables empty · assignRef

Replace this code

Swap $this->assignRef('item', $item) for $this->item = $item.

Joomla 3

Remove or stop calling this

$this->assignRef('items', $items);

Joomla 4 / 6

Use this instead

$this->items = $items;

How to fix it

  1. 1Assign properties directly.

Also known as

assignRef

MVC-GETERROR-001

$model->setError()

getError() / setError() on models and tables

setError/getError were the JError-era API. They linger in Joomla 3 components and fail silently or fatally once JError is gone.

$model->setError() → Exceptions

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Architecture change — no auto-fixMVC

What you will see

  • Call to undefined method ...::getError()

Symptoms people search

save fails with no message · getError empty

Replace this code

Swap $model->setError() for Exceptions.

Joomla 3

Remove or stop calling this

if (!$table->store()) {
    $this->setError($table->getError());
    return false;
}

Joomla 4 / 6

Use this instead

try {
    $table->store();
} catch (\RuntimeException $e) {
    $this->setError($e->getMessage()); // better: throw
    throw $e;
}

How to fix it

  1. 1Throw on failure.
  2. 2Stop returning false plus getError() as the only signal.

Also known as

getError · setError

There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.

MVC-GETINSTANCE-001

JModelLegacy::getInstance()

getInstance() on MVC classes

String getInstance on models/controllers/views is deprecated. MVC Factory resolves namespaced classes.

JModelLegacy::getInstance() → $this->getModel() / MVCFactory

Dies at Joomla 5 → 6
Dies at Joomla 5 → 6J3: Works nativelyJ4: Deprecated — do not shipJ6: Deprecated — do not shipBC plugin: not applicablePatch possible — review itMVC

What you will see

  • Model class not found

Symptoms people search

getInstance model · cannot load model after namespace

Replace this code

Swap JModelLegacy::getInstance() for $this->getModel() / MVCFactory.

Joomla 3

Remove or stop calling this

$model = JModelLegacy::getInstance('Courses', 'LmsModel');

Joomla 4 / 6

Use this instead

$model = $this->getModel('Courses');

How to fix it

  1. 1Use $this->getModel() in controllers.
  2. 2Register the MVC factory in services/provider.php.

Also known as

JModelLegacy::getInstance · JControllerLegacy::getInstance

MVC-NEW-J3-001

Joomla\CMS\MVC (J3 experimental)

Experimental Joomla 3 “new MVC” namespace

Joomla 3 shipped an experimental MVC that Joomla 4 deleted. If you followed those J3 sample classes, they are gone.

Joomla\CMS\MVC (J3 experimental) → Original MVC: HtmlView, ListModel, BaseController

Dies at Joomla 3 → 4
Dies at Joomla 3 → 4J3: Works nativelyJ4: Removed — fatalJ6: Removed — fatalBC plugin: no — already dead on J4Architecture change — no auto-fixMVC

What you will see

  • Class ... not found in experimental MVC

Symptoms people search

J3 new MVC tutorial code 500

Replace this code

Swap Joomla\CMS\MVC (J3 experimental) for Original MVC: HtmlView, ListModel, BaseController.

Joomla 3

Remove or stop calling this

use Joomla\CMS\MVC\View\HtmlView as Experimental;

Joomla 4 / 6

Use this instead

Use the Joomla 4 MVC that came from the old legacy MVC, not the J3 experimental split. HtmlView / ListModel / FormController.

How to fix it

  1. 1Port to the current namespaced MVC from JModelLegacy/JViewLegacy lineage.

Also known as

experimental MVC · Joomla 3 new MVC

There is no 1:1 swap for this one. The architecture changed. If you cannot rewrite it, Infyways can.

Start a project

Have something
to build?

Tell us what you are building. You will hear back from an engineer within one business day.

hello@infyways.com · Remote, working across time zones

Tell us about your project

Fill out the quick form and we'll reach out.