Developing an MVC Component/Introduction

From Joomla! Documentation

< J4.x:Developing an MVC Component
This page contains changes which are not marked for translation.
Other languages:
Deutsch • ‎English • ‎français • ‎polski
Developing an MVC Component for Joomla 4.x

This tutorial will teach you how to develop a component for Joomla 4.x. A component is a type of Joomla extension that provides its own pages to the user, rather than augmenting existing content. A component is the most powerful type of Joomla extension, able to add a large amount of new functionality to a site.

Joomla components are split into two main parts: an administrator part and a site part. The administrator part provides an interface to manage the component, and the site part provides the pages requested by users visiting the website. This tutorial will teach you how to construct both parts.

For a more detailed overview of Components and the Model-View-Controller design pattern they use, please see the Component Basics Guide. However, please be aware that the specific file structure, naming standards and code detailed in the guide relate to Joomla 3.x, and should be ignored for the purposes of this tutorial.


You will need to have Joomla 4.x for this tutorial. Developing for Joomla 4.x requires:

  • A minimum PHP version of 7.2.5 to be installed
  • Composer, to manage PHP dependencies
  • NodeJS version 10 or above, to manage front-end dependencies
  • A MySQL database of version 5.6 or above or
  • A PostgreSQL database of version 11 or above
  • The Git version control system

If you have not set up a local development environment, you will need to do so before attempting this tutorial. To set up your local development environment, please consult the Local Environment Guide.

Migrating from Joomla 3.x[edit]

For the majority of cases, migrating from Joomla 3.x to 4.x is a straightforward process. Most of the changes needed are naming/namespacing changes and moving files around. This author intends to create a migration guide once this tutorial is complete, which will be linked here.