Joomla сделан по концепции ООП и соответствует модели MVC. MVC расшифровывается как Model View Controller, и вы можете получить подробности здесь https://docs.joomla.org/Model-View-Controller. Короче говоря, контроллер выбирает компонент и его переменные представления из URL-адреса, и с помощью этих переменных он отбирает данные из соответствующей модели и передает данные обратно в представление. Вид затем отображает необходимые данные. Контроллер является посредником между представлением и моделью.
Предположим, что это Joomla Link http://yoursite.com/index.php?option=com_hello&view=hello
Таким образом, контроллер выбирает переменную компонента com_hello и переменную представления hello. Теперь в папке компонента com_hello будет файл с именем hello.php, который является основным файлом вашего компонента. В качестве примера я привел следующий код
<?php
/**
* @package Joomla.Administrator
* @subpackage com_hello
*
* @copyright Copyright (C) 2005 - 2018 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// Get an instance of the controller prefixed by Hello
$controller = JControllerLegacy::getInstance('Hello');
// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));
// Redirect if set by the controller
$controller->redirect();
Здесь Статический метод getInstance
класса JControllerLegacy
создаст контроллер. Он будет создавать экземпляр объекта контроллера класса с именем HelloController
. Joomla будет искать объявление этого класса в /components/com_hello/controller.php
.
После того, как контроллер создан, задание контроллера должно выполнить задачу, как определено в URL: <yoursite>/joomla/index.php?option=com_hello&task=<task_name>
. Если задача не задана, заданием по умолчанию является display
. Когда используется дисплей, переменная view
будет определять, что будет отображаться.
Контроллер может решить перенаправить страницу, обычно после выполнения таких задач, как «сохранить», «удалить», «архив» и т. Д. Последнее утверждение $controller->redirect();
заботится об этом перенаправлении.
Основная точка входа, hello.php, по существу передает управление контроллеру, который обрабатывает выполнение задачи, указанной в запросе. В нашем случае задание пустое, поэтому задание по умолчанию для просмотра, и оно равно hello
. Наш компонентно-ориентированный контроллер не делает ничего больше, чем родительский класс, поэтому наш класс контроллера пуст. Итак, наш controller.php выглядит так
class HelloController extends JControllerLegacy
{
}
У класса JControllerLegacy есть такая задача. В нашем примере будет отображено представление с именем Hello.
view.html.php
class HelloViewHello extends JViewLegacy
{
function display($tpl = null)
{
// Assign data to the view
$this->msg = 'Hello';
// Display the view
parent::display($tpl);
}
}
Представление устанавливает текст для вывода, а затем вызывает базовый класс отображения. JViewLegacy
это базовый класс для Joomla! Посмотреть. В нашем случае этот метод будет отображать данные с использованием файла tmpl/default.php
.
Наш default.php будет выглядеть следующим образом
<h1><?php echo $this->msg; ?></h1>
Это просто простое объяснение того, как работает Joomla MVC. Я мог бы просто дать ссылки, но ссылки много раз ломаются или сайт не работает. Но это страница, с которой я скопировал большинство кодов https://docs.joomla.org/J3.x:Developing_an_MVC_Component/Adding_a_view_to_the_site_part
Вы также можете проверить этот слайк, чтобы лучше понять схему MVC https://www.htmlgoodies.com/beyond/php/article.php/3912211/Principles-Of-MVC-for-PHP-Developers.htm