Follow me on...

  • FeedBurner: Joomla15Joomla15
  • Twitter: alexkurgan

Создание вида для интерфейса пользователя

E-mail Печать

Разработчики расширений для Joomla! 2.5 делят код компонента на основные части:

  • модель - это часть компонента, которая оперирует данными приложения
  • контроллер - это обработчик действий пользователя. В нашем случае, действие пользователя - это запрос страницы. Контроллер в зависимости от запроса, будет вызывать модель, для управления данными, и управлять переходом Модели на Вид. Таким образом контроллер не отображает данные, а лишь вызывает модель, которая изменяет данные, а затем передает модель в вид, который отображается на экране.
  • вид - это часть компонента, которая рендерит данные модели. Для веб-приложений, Вид генерирует html страницу, с входными данными. Т.е. вид берет данные из модели, и вносит их в шаблон, который в конечном итоге и видит пользователь. Запомните! Вид не изменяет данные, он только отображает их! Поэтому вид может быть изменен в любое время.

Контроллер (controller)

В коде ядра Joomla! существует отдельный класс для контроллеров – Jcontroller . Этот класс должен быть расширен для использования в нашем компоненте.

В файле site/helloworld.php (точка входа в наш компонент) вставьте следующие строки:

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import joomla controller library
jimport('joomla.application.component.controller');
 
// Get an instance of the controller prefixed by HelloWorld
$controller = JController::getInstance('HelloWorld');
 
// Perform the Request task
$controller->execute(JRequest::getCmd('task'));
 
// Redirect if set by the controller
$controller->redirect();

getInstance это метод класса JController для создания контроллера. В приведенном коде создается экземпляр класса с именем HelloWorldController .

Теперь нам нужно создать файл site/controller.php , где должны объявить HelloWorldController , следующего содержания

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla controller library
jimport('joomla.application.component.controller');
 
/**
 * Hello World Component Controller
 */
class HelloWorldController extends JController
{
}

Если в переменных запроса нет ни какого задания, то выполнится задание по умолчанию - display (отображение). В нашем примере вид будет называться HelloWorld .

Вид (view)

Для того чтобы отобразить данные компонента контроллер будет искать файлы вида по следующему пути: component/com_[component_name]/views/[name of view]/ .

Имя папки по умолчанию это имя названия компонента, в нашем случае это component/com_helloworld/views/helloworld/ .

Имя файла будет иметь следующее имя: view.[view_mode].php , где view.[view_mode] это режим просмотра, по умолчанию это режим html . В нашем примере имя файла вида будет view.html.php .

В папке site создайте следующую структуру папок

002

скопируйте в каждую папку файл index.html .

Далее создайте файл вида site/views/helloworld/view.html.php со следующим содержимым:

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla view library
jimport('joomla.application.component.view');
 
/**
 * HTML View class for the HelloWorld Component
 */
class HelloWorldViewHelloWorld extends JView
{
	// Overwriting JView display method
	function display($tpl = null) 
	{
		// Assign data to the view
		$this->msg = 'Привет МИР! с использованием вида';
 
		// Display the view
		parent::display($tpl);
	}
}

Метод display класса JView вызывается задачей котроллера display . В нашем случае этот метод отобразит данные с помощью фала шаблона tmpl/default.php . Создайте файл site/views/helloworld/tmpl/default.php с содержимым:

<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
?>
<h1><?php echo $this->msg; ?></h1>

Файл шаблона будет включен классом JView , поэтому здесь $this относится к классу HelloWorldViewHelloWorld .

Итак после все этого у нас должна получиться следующая структура файлов и папок компонента:

  • helloworld.xml
  • site/index.html
  • site/helloworld.php
  • site/controller.php
  • site/views/index.html
  • site/views/helloworld/index.html
  • site/views/helloworld/view.html.php
  • site/views/helloworld/tmpl/index.html
  • site/views/helloworld/tmpl/default.php
  • admin/index.html
  • admin/helloworld.php
  • admin/sql/index.html
  • admin/sql/updates/index.html
  • admin/sql/updates/mysql/index.html
  • admin/sql/updates/mysql/0.0.1.sql

Так же откройте файл helloworld.xml, в секцию <files folder="site"> добавьте 2 строки:

<filename>controller.php</filename>
<folder>views</folder>
 

измените данные в секции <version>, измените версию компонента на 0.0.2.

Далее заархивируйте перечисленные файлы и папки в архив. Откройте панель администратора и установите компонент из архива, при установке новые файлы добавятся к компоненту, а старые файлы перезапишутся, т.е. компонент обновится.

Теперь откройте страницу вашсайт.ру/index.php?option=com_helloworld и посмотрите на результат работы. Результатом работы будет вывод сообщения содержащегося в переменной $this->msg , которая задается в файле view.html.php .

Скачать архив для этой части курса

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Mark
 
Интересная статья? Поделись ей с другими: