выполнить sql-запрос в joomla

Привет всем, я сделал компонент для бэкенда в joomla 2.5, но у меня проблема с выполнением sql-запроса, моя переменная пуста, поэтому она ничего мне не показывает.

У меня есть другой файл и документы, но здесь важно для моего вопроса.

сначала в моем контроллере.php у меня есть это внутри файла администратора

class BusquedaController extends JController
{
    protected $default_view= 'restaurantes';
    public function display(){
     parent::display();
    }
}

в моем файле модели у меня есть restaurante.php

class BusquedaModelRestaurante extends JModelList{
    function getListaRestaurantes(){
        $db= JFactory::getDBO();
        $sql= "SELECT * FROM #__restaurantes";
        $db->setQuery($sql);
        return $db->loadObjectList();   
    }
}

в моем файле контроллера у меня есть это

class BusquedaControllerRestaurantes extends JControllerAdmin
{

    public function getModel($name = 'Restaurante', $prefix = 'BusquedaModel', $config = array('ignore_request' => true))
    {
        $model = parent::getModel($name, $prefix, $config);
        return $model;
    }

    function listado(){
        $firephp->log('hola');
        $view=& $this->getView('restaurantes', 'html');
        $model= $this->getModel("restaurante");
        $listaMensajes= $model->getListaRestaurantes();
        $view->assignRef('resList', $listaMensajes);
        $view->display();
        }
}

наконец, в моем файле просмотра у меня есть файл tmpl с моим default.php, который показывает таблицу

foreach ($this->resList as $item):
        $checked=JHTML::_('grid.id', $n, $item->id); ?>
            <tr>
                <td><?php echo $checked; ?></td>
                <td><?php echo $item->id; ?></td>
                <td><?php echo $item->nombre; ?></td>
                <td><?php echo $item->direccion; ?></td>
                <td><?php echo $item->telefono; ?></td>
                <td><?php echo $item->web; ?></td>
                <td><?php echo $item->tipo; ?></td>
                <td><?php echo $item->zona; ?></td>
                <td><?php echo $item->metro; ?></td>
            </tr>
            <?php 

но список элементов пуст, я не знаю, хорошо ли я делаю свой компонент !!, кто-то знает учебник или что-то еще, чтобы сделать компонент в joomla 2.5

Благодарность!


person user852610    schedule 17.07.2012    source источник


Ответы (4)


Попробуйте добавить error_reporting(E_ALL) в начало вашего компонента, надеюсь, это покажет вам, что вы делаете неправильно.

Если это не помогает увидеть, что возвращает запрос в методе getListaRestaurantes(), просто print_r($db->loadObjectList()); jexit();

P.S. В JModels вы можете использовать $this->_db для получения ссылки на объект JDatabase (вместо JFactory::getDBO())

person WooDzu    schedule 17.07.2012

попробуйте это, измените $listaMensajes на $this->resList в контроллере

$this->resList= $model->getListaRestaurantes();

person baxri    schedule 15.07.2014

генерировать исключение во время выполнения

try
{
    $db->setQuery($query);
    $result = $db->loadResult(); // If it fails, it will throw a    RuntimeException 
}
catch (RuntimeException $e)
{
    throw new Exception($e->getMessage());
}

также в контроллере объявить переменную как защищенную

protected $resList;

присвойте значения переменной, например

$this->resList = $model->getListaRestaurantes();
person aiswarya    schedule 27.04.2015

Взгляните на наш создатель компонентов Joomla. Я думаю, вы найдете это полезным.

Я бы рекомендовал максимально придерживаться фреймворка MVC и использовать getItems() и т. д. Просто скопируйте то, что делает com_weblinks. Или еще лучше — пусть создатель компонента сделает все за вас.

person Søren Beck Jensen    schedule 17.07.2012