J3.x

Difference between revisions of "Developing an MVC Component/Adding a view to the site part/ru"

From Joomla! Documentation

< J3.x:Developing an MVC Component
(Updating to match new version of source page)
Line 3: Line 3:
  
 
==Примечания==
 
==Примечания==
== Примечания ==!Н!Этот учебник является частью [[S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Developing в создание MVC компонента для Joomla! 3.х]]: Учебное пособие. Вам рекомендуется прочитать предыдущие части учебника перед прочтением этой.
+
* Этот учебник является частью [[S:MyLanguage/J3.x:Developing_an_MVC_Component/Introduction|Developing в создание MVC компонента для Joomla! 3.х]]: Учебное пособие. Вам рекомендуется прочитать предыдущие части учебника перед прочтением этой.
  
 
Вы можете следовать ниже, чтобы создать компонент Hello World!, или вы можете напрямую загрузить [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-1-basic-component.zip архив]
 
Вы можете следовать ниже, чтобы создать компонент Hello World!, или вы можете напрямую загрузить [https://github.com/scionescire/Joomla-3.2-Hello-World-Component/archive/step-1-basic-component.zip архив]

Revision as of 04:20, 26 April 2016

Other languages:
Deutsch • ‎English • ‎Nederlands • ‎español • ‎français • ‎português do Brasil • ‎русский • ‎العربية • ‎中文(台灣)‎

J3.x:Developing an MVC Component/ru

Примечания

Вы можете следовать ниже, чтобы создать компонент Hello World!, или вы можете напрямую загрузить архив

Добавление визуализации Hello World!

В данной статье мы рассмотрим, как добавить вид базового пакета Joomla! компонента. Для этого примера мы будем продолжать нашу работу на Hello World! компонент.

Существует несколько способов обновления для Joomla! компонент. В этом уроке мы сосредоточимся на варианте 2.

1 Вручную добавить файлы в <path_to_joomla>/
2 Обновление при помощи Joomla! Менеджер расширений и оригинальный каталог, несжатый, используемые для установки компонента
3 Обновление при помощи Joomla! Менеджер расширений и обновление сервера

Чтобы добавить представление вам нужно будет перейти к com_helloworld, что это оригинальный каталог мы сделали для нашего компонента. Используя ваш любимый файловый менеджер, создать или обновить следующие файлы; как создать или изменить файлы, добавить исходный код для каждого файла, который находится в подробности файла.

1 Обновление: helloworld.php <path_to_com_helloworld>/site/helloworld.php
2 Создать: controller.php <path_to_com_helloworld>/site/controller.php
3 Создать: index.html <path_to_com_helloworld>/site/views/index.html
4 Создать: index.html <path_to_com_helloworld>/site/views/helloworld/index.html
5 Создать: view.html.php <path_to_com_helloworld>/site/views/helloworld/view.html.php
6 Создать: default.php <path_to_joomla>/components/com_helloworld/views/helloworld/tmpl/default.php
7 Создать: index.html <path_to_com_helloworld>/site/views/helloworld/tmpl/index.html
8 Обновление: helloworld.xml <path_to_com_helloworld/helloworld.xml

Обновление Компонента Hello World!

Обновить Компонент Hello World! в Joomla! сайт, пожалуйста, выполните те же действия для исходной установки.

Файл Детали

site/helloworld.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * @copyright   Copyright (C) 2005 - 2016 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 HelloWorld
$controller = JControllerLegacy::getInstance('HelloWorld');

// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));

// Redirect if set by the controller
$controller->redirect();

site/controller.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * @copyright   Copyright (C) 2005 - 2016 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');
/**
 * Hello World Component Controller
 *
 * @since  0.0.1
 */
class HelloWorldController extends JControllerLegacy
{
}

site/views/helloworld/view.html.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * @copyright   Copyright (C) 2005 - 2016 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');

/**
 * HTML View class for the HelloWorld Component
 *
 * @since  0.0.1
 */
class HelloWorldViewHelloWorld extends JViewLegacy
{
	/**
	 * Display the Hello World view
	 *
	 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
	 *
	 * @return  void
	 */
	function display($tpl = null)
	{
		// Assign data to the view
		$this->msg = 'Hello World';

		// Display the view
		parent::display($tpl);
	}
}

site/views/helloworld/tmpl/default.php

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  com_helloworld
 *
 * @copyright   Copyright (C) 2005 - 2016 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');
?>
<h1><?php echo $this->msg; ?></h1>

index.html Примечание - один и тот же код используется для всех папок

<html><body bgcolor="#FFFFFF"></body></html>

helloworld.xml

<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.2.0" method="upgrade">

	<name>Hello World!</name>
	<!-- The following elements are optional and free of formatting constraints -->
	<creationDate>December 2013</creationDate>
	<author>John Doe</author>
	<authorEmail>john.doe@example.org</authorEmail>
	<authorUrl>http://www.example.org</authorUrl>
	<copyright>Copyright Info</copyright>
	<license>License Info</license>
	<!--  The version string is recorded in the components table -->
	<version>0.0.2</version>
	<!-- The description is optional and defaults to the name -->
	<description>Description of the Hello World component ...</description>

	<update> <!-- Runs on update; New since J2.5 -->
		<schemas>
			<schemapath type="mysql">sql/updates/mysql</schemapath>
		</schemas>
	</update>

	<!-- Site Main File Copy Section -->
	<!-- Note the folder attribute: This attribute describes the folder
		to copy FROM in the package to install therefore files copied
		in this section are copied from /site/ in the package -->
	<files folder="site">
		<filename>index.html</filename>
		<filename>helloworld.php</filename>
		<filename>controller.php</filename>
		<folder>views</folder>
	</files>

	<administration>
		<!-- Administration Menu Section -->
		<menu link='index.php?option=com_helloworld'>Hello World!</menu>
		<!-- Administration Main File Copy Section -->
		<!-- Note the folder attribute: This attribute describes the folder
			to copy FROM in the package to install therefore files copied
			in this section are copied from /admin/ in the package -->
		<files folder="admin">
			<!-- Admin Main File Copy Section -->
			<filename>index.html</filename>
			<filename>helloworld.php</filename>
			<!-- SQL files section -->
			<folder>sql</folder>
		</files>
	</administration>

</extension>

Код Пояснения

В случае, если вам любопытно, почему это работает так, как он делает.

helloworld.php

defined('_JEXEC') or die('Restricted access');

Это позволяет для безопасной точки входа в интерфейс Joomla! Платформа. JEXEC содержится подробное объяснение.

$controller = JControllerLegacy::getInstance('HelloWorld');

"JControllerLegacy" является базовым классом для Joomla! Контроллер. Для того, чтобы наш сайт использовал контроллеры, мы должны расширить этот класс в нашем компоненте. В "getInstance" статический метод "JControllerLegacy" класса создадим контроллер. В коде, приведенном выше, это будет инстанцировать объект класса контроллера по имени "HelloWorldController". Joomla будет искать объявление этого класса в <path_to_joomla>/htdocs/components/com_helloworld/controller.php.

$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));

После того, как контроллер создан, мы инструктируем контроллер для выполнения задачи, как определено в URL: <yoursite>/joomla/index.php?option=com_helloworld&task=<task_name>. Если задача поставлена, задача по умолчанию 'display' будет принято. Когда дисплей не используется, 'view' переменная будет решать, что будет отображаться. Другими распространенными задачами являются save, edit, new и т. д.

$controller->redirect();

Контроллер может принять решение перенаправить страницу, обычно после того, как задание 'save' было завершено. Это последнее заявление заботится о фактическом перенаправлении.

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

controller.php

class HelloWorldController extends JControllerLegacy
{
}

Когда ни одна задача не подается в запрос переменным, то будет выполнена задача по умолчанию. Сейчас это задача отображения по умолчанию. В JControllerLegacy классе есть такая задача. В нашем примере она будет показывать надпись с именем helloworld.

view.html.php

class HelloWorldViewHelloWorld extends JViewLegacy
{
	function display($tpl = null)
	{
		// Assign data to the view
		$this->msg = 'Hello World';
 
		// Display the view
		parent::display($tpl);
	}
}

Представление задает текст для вывода и затем вызывает базовый класс дисплея.!Н!"JViewLegacy" является базовым классом для Joomla! View. В нашем случае этот метод будет отображать данные с использованием tmpl/default.php файла.

default.php

<h1><?php echo $this->msg; ?></h1>

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

helloworld.xml

<version>0.0.2</version>

Обновляет номер версии.

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

Рассказывает установщик приложения добавить controller.php и мнения/каталог

Содержание Компонента

В этот момент ваш компонент должен содержать следующие файлы:

1 helloworld.xml это XML-файл (манифест) файл, который говорит Joomla! как установить наш компонент.
2 site/helloworld.php это сайт точка входа для компонента Hello World!
3 site/index.html предотвращает листинг из веб-сервера содержимого директории
4 site/controller.php файл, представляющий контроллер
5 site/views/index.html предотвращает листинг из веб-сервера содержимого директории
6 site/views/helloworld/index.html предотвращает листинг из веб-сервера содержимого директории
7 site/views/helloworld/view.html.php файл определяющий вид
8 site/views/helloworld/tmpl/index.html предотвращает листинг из веб-сервера содержимого директории
9 site/views/helloworld/tmpl/default.php представление по умолчанию
10 admin/index.html предотвращает листинг из веб-сервера содержимого директории
11 admin/helloworld.php это точка входа администратора в компонент Hello World!
12 admin/sql/index.html предотвращает листинг из веб-сервера содержимого директории
13 admin/sql/updates/index.html предотвращает листинг из веб-сервера содержимого директории
14 admin/sql/updates/mysql/index.html предотвращает листинг из веб-сервера содержимого директории
15 admin/sql/updates/mysql/0.0.1.sql файл, позволяющий инициализировать версию схемы компонента com_helloworld.
Info non-talk.png
General Information

Пожалуйста, задавайте вопросы в https://github.com/joomla/Joomla-3.2-Hello-World-Component для создания любого кода или редактируйте исходный код на этой странице.