2

こんにちは皆さん、私は joomla 2.5 でバックエンド用のコンポーネントを作成しましたが、SQL クエリの実行に問題があります。変数が空であるため、何も表示されません。

私は他のファイルとドキュメントを持っていますが、ここで私の質問にとって重要です。

最初に私のcontroller.phpで、私はこれをadminファイルの中に持っています

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();
        }
}

最後に、ビュー ファイルに、テーブルを表示する default.php を含む tmpl ファイルがあります。

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 

しかし、要素の reslist は空です。自分のコンポーネントがうまくできているかどうかわかりません!!、誰かが joomla 2.5 でコンポーネントを実行するためのチュートリアルまたは何かを知っています

ありがとう!

4

4 に答える 4

0

コンポーネントの先頭にerror_reporting(E_ALL)を追加してみてください。うまくいけば、何が間違っているのかがわかります。

それでもクエリがgetListaRestaurantes()メソッドで何を返すかを単純に確認するのに役立たない場合 print_r($db->loadObjectList()); jexit();

PS JModelsでは、$ this-> _ dbを使用して、(JFactory :: getDBO()の代わりに)JDatabaseオブジェクトへの参照を取得できます。

于 2012-07-17T12:48:47.410 に答える
0

これを試して、コントローラーで $listaMensajes を $this->resList に変更します

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

于 2014-07-15T11:26:52.207 に答える
0

実行時例外をスローする

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();
于 2015-04-27T10:15:51.077 に答える
-2

Joomla Component Creatorをご覧ください。便利だと思います。

可能な限り MVC フレームワークに固執し、getItems() などを使用することをお勧めします。com_weblinks が行っていることをコピーするだけです。または、さらに良いことに、コンポーネントの作成者にすべてを任せてください。

于 2012-07-17T12:36:09.667 に答える