Я создал компонент, который из базы данных выбирает информацию об автомобилях. Теперь надо, чтобы выборка проходила по каким-либо критериям, задаваемым пользователем, например, по марке автомобиля. Создаю форму. Теперь вопрос: как происходит обработка формы? Много материала прочитал, но так и не понял какие файлы еще нужно создать. Имею следующие файлы: baza.php controller.php views/baza/view.html.php models/baza.php views/baza/tmpl/default.php Вот листинги: controller.php: Код (PHP): <?php jimport('joomla.application.component.controller'); class BazaController extends JController { function display() { parent::display(); } } ?> views/baza/view.html.php: Код (PHP): <?php defined( '_JEXEC' ) or die( 'Restricted access' ); jimport( 'joomla.application.component.view'); class BazaViewBaza extends JView { function display($tpl = null) { $model = $this->getModel(); $rows=$model->getBazaList(); $this->assignRef( 'rows',$rows ); parent::display($tpl); } } ?> models/baza.php: Код (PHP): <?php defined('_JEXEC') or die(); jimport('joomla.application.component.model'); class BazaModelBaza extends JModel { function _getBazaQuery( &$options ) { $db= JFactory::getDBO(); $id= @$options['id']; $query ="SELECT* from #__baza"; return $query; } function getBazaList( $options=array() ){ $query = $this->_getBazaQuery( $options ); $result = $this->_getList( $query ); return @$result;} } ?> views/baza/tmpl/default.php: Код (PHP): <?php defined('_JEXEC') or die('Restricted access'); ?> <h1><?php echo "Baza Avtomobiley"; ?></h1> <ul> <? // selections of data records in an array foreach ($this->rows as $row) { ?> <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> </li><BR> <?php } ?> </ul> <form action="index.php" method="post"> <p>marka:<br><select name="marka" size="1"> <option>VAZ</option> <option>BMW</option> <option>Renault</option> </select></p> <input name="submit" type="submit" value="Poisk"> <input type="hidden" name="option" value="com_baza" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="controller" value="" /> </form> Какие значения должны иметь скрытые поля в форме? Какие новые файлы нужно создать? в каких директориях? Вложил zip архив компонента
В форме добавляете нужные Вам поля, а в модели получаете параметры с формы. Модель будет выглядеть примерно так: Код (PHP): <?php defined('_JEXEC') or die(); jimport('joomla.application.component.model'); class BazaModelBaza extends JModel { private $_paramArr; function _getBazaQuery( &$options ) { $db= JFactory::getDBO(); $this->_getParams(); $id= @$options['id']; $query ="SELECT* from #__baza WHERE field1 = '{$this->_paramArr["param_name1"]}' AND field2 = '{$this->_paramArr["param_name2"]}'"; return $query; } function getBazaList( $options=array() ) { $query = $this->_getBazaQuery( $options ); $result = $this->_getList( $query ); return @$result; } private function _getParams() { $this->_paramArr["param_name1"] = JRequest::getVar("param_name1"); $this->_paramArr["param_name2"] = JRequest::getVar("param_name2"); } } ?>
А какие значения присвоить скрытым полям в форме controller, task и правильно ли указан form action="index.php"? Мне выдается ошибка вид не найден: 500 - Вид не найден [название, тип, префикс]: frontpage,html,bazaView: Код (PHP): <form action="index.php" method="post"> <p>marka:<br><select name="marka" size="1"> <option>VAZ</option> <option>BMW</option> <option>Renault</option> </select></p> <input name="submit" type="submit" value="Poisk"> <input type="hidden" name="option" value="com_baza" /> <input type="hidden" name="task" value="" /> <input type="hidden" name="controller" value="" /> </form>