Joomla 1.5 Простенький компонент

Тема в разделе "Создание расширений для Joomla", создана пользователем vipTelnet, 02.01.2011.

  1. Offline

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

    Регистрация:
    02.01.2011
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    Недавно начал изучать программирование под Joomla.
    В PHP разбираюсь нормально.
    Решил не много изменить тестовый компонент.
    Так что б он на фронт енде позволял, пользователям писать данные в 2 текстовых поля, а потом сохранял их в базу данных, но сохраний не происходит, ошибку не пишет, но ничего не сохраняет, вот код всех файлов.

    Файл Hello.php в корне
    Код (PHP):
    1. <?php
    2. defined('_JEXEC') or die('Restricted access');
    3.  
    4. // Create the controller
    5. $classname  = 'HelloController'.$controller;
    6. $controller = new $classname();
    7.  
    8. // Perform the Request task
    9. $controller->execute( JRequest::getVar('task'));
    10.  
    11. // Redirect if set by the controller
    12. $controller->redirect();
    13.  
    14. ?>


    Файл controller.php в корне
    Код (PHP):
    1. <?php
    2.  
    3. jimport('joomla.application.component.controller');
    4.  
    5. class HelloController extends JController
    6. {
    7.  
    8.     function save()
    9.     {
    10.         $model = $this->getModel('hello');
    11.  
    12.         if ($model->store($post)) {
    13.             $msg = JText::_( 'Greeting Saved!' );
    14.         } else {
    15.             $msg = JText::_( 'Error Saving Greeting' );
    16.         }
    17.  
    18.         // Check the table in so it can be edited.... we are done with it anyway
    19.         $link = 'index.php?option=com_hello';
    20.         $this->setRedirect($link, $msg);
    21.     }
    22. }
    23. ?>


    Файл models/hello.php
    Код (PHP):
    1. <?php
    2.  
    3. // Check to ensure this file is included in Joomla!
    4.  
    5. defined ('_JEXEC') or die();
    6.  
    7. jimport( 'joomla.application.component.model' );
    8.  
    9. class HelloModelHello extends JModel
    10. {
    11.  
    12.  
    13.     function store()
    14.     {  
    15.         $row =& $this->getTable();
    16.  
    17.         $data = JRequest::get( 'post' );
    18.  
    19.         // Bind the form fields to the hello table
    20.         if (!$row->bind($data)) {
    21.             $this->setError($this->_db->getErrorMsg());
    22.             return false;
    23.         }
    24.  
    25.         // Make sure the hello record is valid
    26.         if (!$row->check()) {
    27.             $this->setError($this->_db->getErrorMsg());
    28.             return false;
    29.         }
    30.  
    31.         // Store the web link table to the database
    32.         if (!$row->store()) {
    33.             $this->setError( $row->getErrorMsg() );
    34.             return false;
    35.         }
    36.  
    37.         return true;
    38.     }
    39. }


    Файл tables/hellos.php
    Код (PHP):
    1. <?php
    2.  
    3. // No direct access
    4. defined( '_JEXEC' ) or die( 'Restricted access' );
    5.  
    6. class TableHello extends JTable
    7. {
    8.     var $id = null;
    9.     var $lagin = null;
    10.     var $pass = null;
    11.  
    12.     function TableHello(& $db) {
    13.         parent::__construct('#__hello', 'id', $db);
    14.     }
    15. }


    Файл views\hello\view.html.php
    Код (PHP):
    1. <?php
    2.  
    3. // no direct access
    4.  
    5. defined( '_JEXEC' ) or die( 'Restricted access' );
    6.  
    7. jimport( 'joomla.application.component.view');
    8.  
    9.  
    10. class HelloViewHello extends JView
    11. {
    12.     function display($tpl = null)
    13.     {
    14.         $model = $this->getModel();
    15.         $greeting = $model->getauth();
    16.         $this->assignRef( 'greeting',   $greeting );
    17.  
    18.         parent::display($tpl);
    19.     }
    20. }
    21. ?>



    Файл \views\hello\tmpl\default.php
    Код (PHP):
    1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    2. <?php // no direct access
    3. defined('_JEXEC') or die('Restricted access'); ?>
    4. <h1><?php echo print_r($this->greeting); ?></h1>
    5. <h1><?php echo $this->greeting[0]['lagin']; ?></h1>
    6. <h1><?php echo $this->greeting[0]['pass']; ?></h1>
    7. <h1><?php echo $this->greeting[1]['lagin']; ?></h1>
    8. <h1><?php echo $this->greeting[1]['pass']; ?></h1>
    9. <form action="<?php echo $link = JRoute::_( 'index.php?option=com_hello&controller=hello&task=save'); ?>" method="post" enctype="application/x-www-form-urlencoded">
    10. <input name="lagin" type="text" size="20" maxlength="16">
    11. <input name="pass" type="text" size="20" maxlength="16">
    12. <input type="hidden" name="option" value="com_hello" />
    13. <input type="hidden" name="task" value="" />
    14. <input type="hidden" name="controller" value="hello" />
    15. <input name="Submit" type="submit" value="Отправить">
    16. </form>



    SQL запрос для создания таблицы
    Код (PHP):
    1. CREATE TABLE #__hello (
    2.  id int(11) NOT NULL auto_increment,
    3.   lagin varchar(25) NOT NULL,
    4.   pass varchar(25) NOT NULL,
    5.   PRIMARY KEY  (id)
    6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    7.  
    8. INSERT INTO #__hello (lagin,pass) VALUES ('vipTelnet','12465448'),
    9. ('Slavik','alknerlj23'),
    10. ('Ciao_Mondo!','234werw344');
     
    Последнее редактирование: 03.01.2011
  2.  
  3. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Код (PHP):
    1. function TableHello(& $db) {
    2.         parent::__construct('#__hello', 'id', $db);
    3.     }


    Может тут стоит указать необходимые поля для записи ?
     
  4. Offline

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

    Регистрация:
    02.01.2011
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    В документации по API написано.

    Код (html):
    1. Object constructor to set table and key field
    2. Can be overloaded/supplemented by the child class
    3. access: protected
    4. JTable __construct (string $table, string $key,  &$db, object $db)
    5. string $table: name of the table in the db schema relating to child class
    6. string $key: name of the primary key field in the table
    7. object $db: JDatabase object
    8. &$db


    Мне не понятно куда там писать поля для записи?
     
  5. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    а что у вас в
    Код (PHP):
    1. $data = JRequest::get( 'post' );
    хранится ? вы проверяли ?
     
  6. Offline

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

    Регистрация:
    02.01.2011
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    Запаковал компонент обратно в архив,
    Архив во вложении.
    Нужно что б на стороне сайта пользователь мог вводить данный в тестовые поля, а из админки их было видно.
    Есть есть время глянь пожалуйста.
     

    Вложения:

    • com_hello.zip
      Размер файла:
      16.4 КБ
      Просмотров:
      2

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

Загрузка...