Как обработать форму? Создание компонента

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

  1. Kacer
    Offline

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

    Регистрация:
    28.02.2010
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    Я создал компонент, который из базы данных выбирает информацию об автомобилях. Теперь надо, чтобы выборка проходила по каким-либо критериям, задаваемым пользователем, например, по марке автомобиля. Создаю форму. Теперь вопрос: как происходит обработка формы? Много материала прочитал, но так и не понял какие файлы еще нужно создать. Имею следующие файлы:
    baza.php
    controller.php
    views/baza/view.html.php
    models/baza.php
    views/baza/tmpl/default.php
    Вот листинги:

    controller.php:
    Код (PHP):
    1. <?php
    2. jimport('joomla.application.component.controller');
    3.  
    4. class BazaController extends JController
    5. {
    6.  
    7.     function display()
    8.     {
    9.         parent::display();
    10.     }
    11.  
    12. }
    13. ?>


    views/baza/view.html.php:
    Код (PHP):
    1. <?php
    2.  
    3. defined( '_JEXEC' ) or die( 'Restricted access' );
    4.  
    5. jimport( 'joomla.application.component.view');
    6.  
    7. class BazaViewBaza extends JView
    8. {
    9.     function display($tpl = null)
    10.     {
    11.     $model = $this->getModel();
    12.     $rows=$model->getBazaList();
    13.         $this->assignRef( 'rows',$rows );
    14.         parent::display($tpl);
    15.     }
    16. }
    17. ?>


    models/baza.php:
    Код (PHP):
    1. <?php
    2. defined('_JEXEC') or die();
    3. jimport('joomla.application.component.model');
    4. class BazaModelBaza extends JModel
    5. {
    6. function _getBazaQuery( &$options )
    7. {
    8. $db= JFactory::getDBO();
    9. $id= @$options['id'];
    10. $query ="SELECT* from #__baza";
    11. return $query;
    12. }
    13. function getBazaList( $options=array() ){
    14. $query  = $this->_getBazaQuery( $options );
    15. $result = $this->_getList( $query );
    16. return @$result;}
    17. }
    18. ?>


    views/baza/tmpl/default.php:
    Код (PHP):
    1. <?php
    2. defined('_JEXEC') or die('Restricted access');
    3. ?>
    4. <h1><?php echo "Baza Avtomobiley"; ?></h1>
    5. <ul>
    6. <?
    7. // selections of data records in an array
    8. foreach ($this->rows as $row) {
    9.     ?>
    10.     <li><?php echo $row->marka; ?> <small><em>(<?php echo $row->model; ?>)</em></small> <?php print("$row->god g.v. "); ?> <?php print("$row->probeg km ");?> <?php print("cena: $row->cena rub.");?> <br>
    11.     </li><BR>
    12.  
    13.     <?php
    14. }
    15. ?>
    16. </ul>
    17.  
    18. <form action="index.php" method="post">
    19. <p>marka:<br><select name="marka" size="1">
    20.             <option>VAZ</option>
    21.                         <option>BMW</option>
    22.                         <option>Renault</option>
    23.             </select></p>
    24. <input name="submit" type="submit" value="Poisk">
    25.  
    26. <input type="hidden" name="option" value="com_baza" />
    27. <input type="hidden" name="task" value="" />
    28. <input type="hidden" name="controller" value="" />
    29.  
    30. </form>


    Какие значения должны иметь скрытые поля в форме? Какие новые файлы нужно создать? в каких директориях? Вложил zip архив компонента
     

    Вложения:

    • com_baza.zip
      Размер файла:
      18.3 КБ
      Просмотров:
      1
    Последнее редактирование: 28.02.2010
  2.  
  3. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    В форме добавляете нужные Вам поля, а в модели получаете параметры с формы.
    Модель будет выглядеть примерно так:
    Код (PHP):
    1. <?php
    2. defined('_JEXEC') or die();
    3. jimport('joomla.application.component.model');
    4. class BazaModelBaza extends JModel
    5. {
    6.     private $_paramArr;
    7.    
    8.     function _getBazaQuery( &$options )
    9.     {
    10.         $db= JFactory::getDBO();
    11.         $this->_getParams();
    12.         $id= @$options['id'];
    13.         $query ="SELECT* from #__baza
    14.            WHERE field1 = '{$this->_paramArr["param_name1"]}'
    15.                AND field2 = '{$this->_paramArr["param_name2"]}'";
    16.        
    17.         return $query;
    18.     }
    19.    
    20.     function getBazaList( $options=array() )
    21.     {
    22.         $query    = $this->_getBazaQuery( $options );
    23.         $result = $this->_getList( $query );
    24.        
    25.         return @$result;
    26.     }
    27.    
    28.     private function _getParams()
    29.     {
    30.         $this->_paramArr["param_name1"] = JRequest::getVar("param_name1");
    31.         $this->_paramArr["param_name2"] = JRequest::getVar("param_name2");
    32.     }
    33. }
    34. ?>
     
  4. Kacer
    Offline

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

    Регистрация:
    28.02.2010
    Сообщения:
    16
    Симпатии:
    0
    Пол:
    Мужской
    А какие значения присвоить скрытым полям в форме controller, task и правильно ли указан form action="index.php"? Мне выдается ошибка вид не найден: 500 - Вид не найден [название, тип, префикс]: frontpage,html,bazaView:
    Код (PHP):
    1. <form action="index.php" method="post">
    2. <p>marka:<br><select name="marka" size="1">
    3.                         <option>VAZ</option>
    4.                         <option>BMW</option>
    5.                         <option>Renault</option>
    6.               </select></p>
    7. <input name="submit" type="submit" value="Poisk">
    8. <input type="hidden" name="option" value="com_baza" />
    9. <input type="hidden" name="task" value="" />
    10. <input type="hidden" name="controller" value="" />
    11. </form>
     
  5. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Значит у вас ошибка в файловой структуре компонента. Внимательнее читайте доки.
     

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

Загрузка...