Работа с компонентом

Тема в разделе "Программирование", создана пользователем crash_1, 22.01.2018.

  1. Offline

    crash_1 Недавно здесь

    Регистрация:
    22.01.2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Доброго времени суток. Помогите разобраться, стал недавно осваивать joomla. Пишу тестовый компонент (frontend).
    Создаю папку мой_сайт/components/com_test, в нем файл мой_сайт/components/com_test/test.php (точка входа в компонент) в этом файле просто написал "Hello world".
    При вызове компонента http://мой_сайт/?option=com_test выводит сообщения Cannot open URL (или как 404 ошибка)

    Joomla версия: 3.8.0

    Зарание спасибо!
     
  2.  
  3. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
    Ну правильно выводит. Должно быть так

    http://мой_сайт/index.phpi?option=com_test

    А вообще рекомендую сразу сделать первую view точка входа это пара и чтобы она не работала надо очень сильно постаратьсястрок.

    P.S все равно писать бекчасть придется так что лучше начинать с нее
     
  4. Offline

    crash_1 Недавно здесь

    Регистрация:
    22.01.2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
  5. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
    Попробуй, контролер и view сделать.
     
  6. Offline

    crash_1 Недавно здесь

    Регистрация:
    22.01.2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Создал пустой контроллер и представление но все так же. За ранее говорил что дела не в них а с точкой входа.

    Файловая структура:
    -com_test
    --views
    ---test
    ----tmpl
    -----default.php
    ----view.html.php
    --controller.php
    --test.php

    test.php
    Код (PHP):
    1. <?php
    2.  
    3. defined('_JEXEC') or die('Not execute');
    4.  
    5. //Подключение контроллера
    6. jimport('joomla.application.component.controller');
    7.  
    8. //Test контроллер
    9. $controller = JControllerLegacy::getInstance('Test');
    10.  
    11. // Исполнение задачи (заданной переменной task)
    12. $input = JFactory::getApplication()->input;
    13. $controller->execute($input->getCmd('task'));
    14.  
    15. $controller->redirect();


    controller.php
    Код (PHP):
    1. <?php
    2.  
    3. defined('_JEXEC') or die('Not execute');
    4.  
    5. class TestController extends JControllerLegacy{
    6.    
    7.    
    8. }


    view.html.php
    Код (PHP):
    1. <?php
    2.  
    3. defined('_JEXEC') or die('Not execute');
    4.  
    5. jimport('joomla.application.component.view');
    6.  
    7. class TestViewTest extends JViewLegacy{
    8.    
    9.     protected $msg;
    10.    
    11.     public function display($tpl = null){
    12.        
    13.         $this->msg = "Hello World";
    14.        
    15.         parent::display($tpl);
    16.     }
    17. }


    default.php
    Код (PHP):
    1. <?php
    2.  defined('_JEXEC') or die('Restricted access');
    3.  ?>
    4.  <h1><?php echo $this->msg; ?></h1>
     
  7. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
    Да вроде все верно. разве что дефолтная view в контролере не прописана. А сам компонент установился? И не стоят ли доп извращения вроде sh404SEF
    И файл манифеста покажи.
    P.S уже можно и даже нужно юзать namespaces чтобы потом меньше переписывать.

    Лови для примера это одна из моих последних поделок, права не закончена ещё и под конкретный сайт, но для примера подойдёт.
    https://github.com/Nerudas/com_board
     
    Последнее редактирование: 23.01.2018
  8. Offline

    crash_1 Недавно здесь

    Регистрация:
    22.01.2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    А как посмотреть установился ли компонент? и где это файл манифеста?
     
  9. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
    Погодь, ты что его не учюстанавоивал через менеджер расширений?
     
  10. Offline

    crash_1 Недавно здесь

    Регистрация:
    22.01.2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Нет. Я с Joomla некогда не работал, а так я работаю с фреймворками Laravel, Zend и т. д. Друг попросил написать ему компонент. Документацию прочитал, но не слова чтобы их нужно устанавливать.

    А он установится если у меня только frontend будет описано?
    И как его установить?
     
    Последнее редактирование: 23.01.2018
  11. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
  12. Offline

    crash_1 Недавно здесь

    Регистрация:
    22.01.2018
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    @Septdir
    Можно еще такой вопрос. В файле монифесте есть 2 тега установка и удаление, там указывается путь до 2 файлов sql. Я их указал, но запрос почему то не выполнился. То есть база не создалась.
     
  13. Septdir
    Offline

    Septdir Пользователь => Cпециалист <=

    Регистрация:
    27.11.2017
    Сообщения:
    172
    Симпатии:
    16
    Пол:
    Мужской
    Ну скорее всего, дело вот в чем. Указанные тэги выполняються именно при Установке(не обновлении) и Удалении
    Как-то вроде можно еще для обновления в манифесте писать, но я сделал проще прописал запуск в скрипте установки и все


    Код (PHP):
    1. /**
    2.      * Method to fix tables
    3.      *
    4.      * @param string $path path to component directory
    5.      *
    6.      * @since 1.0.0
    7.      */
    8.     protected function fixTables($path)
    9.     {
    10.         $file = JPATH_ADMINISTRATOR . $path . '/sql/install.mysql.utf8.sql';
    11.         if (!empty($file))
    12.         {
    13.             $sql = JFile::read($file);
    14.             if (!empty($sql))
    15.             {
    16.                 $db      = Factory::getDbo();
    17.                 $queries = $db->splitSql($sql);
    18.                 foreach ($queries as $query)
    19.                 {
    20.                     $db->setQuery($db->convertUtf8mb4QueryToUtf8($query));
    21.                     try
    22.                     {
    23.                         $db->execute();
    24.                     }
    25.                     catch (JDataBaseExceptionExecuting $e)
    26.                     {
    27.                         JLog::add(Text::sprintf('JLIB_INSTALLER_ERROR_SQL_ERROR', $e->getMessage()),
    28.                             JLog::WARNING, 'jerror');
    29.                     }
    30.                 }
    31.             }
    32.         }
    33.     }
     

Поделиться этой страницей

Загрузка...