Создание админки компонента

Дата Автор 

В прошлом уроке мы занимались созданием пользовательской части компонента, в этом, как и обещал, будем создавать админку, иначе можно сказать бэкенд , тут уж кому как удобно. В отличие от фронтэнда (пользовательской части), файлы админки я создал намного быстрее.

Создание компонента joomla 2.5

Ну,  это в принципе не удивительно, ведь теперь я, знаю, как устроен шаблон MVC, да и они особо не отличаются друг от друга. Наверно именно по этому создание компонента joomla становиться не таким сложным. Хочу напомнить, что для понимания данного поста следует прочитать предыдущие уроки. Что же давайте приступим.

 

Создание главного файла бэкэнда.

 

Файлы админки компонента будут находиться в папке com_название компонента (com_lesson), которая находиться в папке administrator/components. Главный файл компонента должен называться admin.название_компонента.php (admin.lesson.php). Но если назвать его просто название_компонента.php (lesson.php) компонент будет так, же работать. Скажу честно, не знаю, зачем добавлять слово admin, к названию главного файла, но раз во всех других компонентах добавляют, я сделаю так тоже.  Код главного файла админки выглядит почти, так же как и пользовательской части:

 

<?php

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

require_once( JPATH_COMPONENT.DS.'controller.php' );

if($controller = JRequest::getVar( 'controller' ))

{

   require_once( JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php' );

}

$classname = 'LessonController'.$controller;

$controller = new $classname( );

$controller->execute( JRequest::getVar( 'task' ) );

$controller->redirect();

 

Собственно рассказывать тут нечего все нам уже известно, следовательно, переходим к контроллеру.

 

Создание контроллера

 

Контроллер создаем в этой же папке и назовем его, так же как и в фронтэнде controller.php. Его код  так же идентичен  контроллеру фронтэнда, за исключением функции под названием конструктор, но о ней расскажу позже.

<?php

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

jimport('joomla.application.component.controller');

class LessonController extends JController

{

  function __construct()
    {
        parent::__construct();
    }

  public function display()

    {

       parent::display();

    }

}

 

Создание модели

 

Cоздаем папку models, а в ней файл lesson.php. Код модели будет выглядеть так.

 

<?php

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

jimport( 'joomla.application.component.model' );

class LessonModelLesson extends JModel

{

   function getMtext()                                                           

      {

         $text = 'Если меня видно в админке, значит компонент работает!!!';

         return $text;

      }

}

 

Создание вида

 

Создаем папки views/lesson/ а в ней файл с кодом управления видом view.html.php

 

<?php

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

jimport('joomla.application.component.view');

class LessonViewLesson extends JView

{

   function display ($tpl = null)

      {

               $model = $this->getModel();

               $text = $model->getMtext();

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

               parent:: display ($tpl);

      }

}

 

В папке lesson создаем папку tmpl, а в ней создаем файл вывода данных с названием default.php. Следует заметить, что тут произойдут маленькие изменения:

 

<?php

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

echo $this->text;

 

Ни в коем случае нельзя вставлять <?php и ?> перед и после echo $this->text; так как система будет ругаться и не выполнит код.

 

Как видите после создания пользовательской части компонента, админка не представляет больших трудностей. Хотя если посмотреть с другой стороны, то ничего кроме как пустой оболочки и не сделали. Вот именно этим мы и будем заниматся в следующих уроках. Забегу немного вперед и расскажу о компоненте com_lesson который я хочу написать. Суть этого компонента проста, в админке создать название урока в нем будет задание и ответ. В пользовательской части будет выводиться текст задания и форма в которую нужно будет ввести ответ. Если ответ будет правильный появиться надпись "ответ верный" иначе "ответ неверный". Это то чем мы будем заниматься в последующих уроках, вывод данных из базы данныхдобавление данных в базу данных и изменение и удаление данных из базы данных.

 

P.S. Во вложении вы можете скачать файлы админки моего компонента com_lesson. Вложения находяться внизу страницы, сразу под тегами.

 

Спасибо за внимание!!! С уважением Остапенко Илья.

Оцените материал
(1 Голосовать)
 

Комментарии   

 
Алексей
+1 # 25.09.2012 18:02
Очень хорошие статьи - подробно и понятно...Перер ыл кучу сайтов - везде только перевод мануала с минимальными объяснениями((
Ответить | Ответить с цитатой | Цитировать
 
 
Остапенко Илья
0 # Остапенко Илья 25.09.2012 20:19
Большое спасибо! К сожалению серия постов о создании компонента, ещё не законченна, но думаю, что скоро допишу.
Ответить | Ответить с цитатой | Цитировать
 
 
Алексей
0 # 26.09.2012 10:32
Немного не в тему, но тем не менее...у Вас меню верхнее - кнопка мои услуги 404 выдает)
Ответить | Ответить с цитатой | Цитировать
 
 
Алексей
0 # 26.09.2012 14:14
У меня аналогичный вопрос по файлу admin.lesson.php...

// No direct access to this file
defined('_JEXEC') or die('Restricted access');

// require helper file
JLoader::register('HelloWorldHelper', dirname(__FILE_ _) . DS . 'helpers' . DS . 'helloworld.php ');

// import joomla controller library
jimport('joomla.application.component.controller');

// Get an instance of the controller prefixed by HelloWorld
$controller = JController::ge tInstance('Hell oWorld');

// Perform the Request task
$controller->execute(JRequest::getCmd('task'));

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

Это строки из мануала по созданию комп-та на Джумла 2.5...они немного отличаются от Вашего кода...объяснит е, пожалуйста, эти строки)
Ответить | Ответить с цитатой | Цитировать
 
 
Остапенко Илья
0 # Остапенко Илья 26.09.2012 16:29
Не 404, а 403 =) Спасибо, исправил!
В принципе, все тоже самое что и описывал на страничке с пользовательско й частью, только не знаю зачем в мануале, подключается вспомогательный файл.
Ответить | Ответить с цитатой | Цитировать
 
 
Алексей
0 # 26.09.2012 16:39
Спасибо! Все стало ясно) А хелпер по мануалу дальше нужен будет. Но я до того не дошел пока)
Ответить | Ответить с цитатой | Цитировать
 
Добавить комментарий


Защитный код
Обновить