単一のデータベース テーブルからデータを抽出する方法は?
たとえば、テーブルからのデータが必要です: カテゴリ、列: ID 1 の説明?
Joomla コンポーネントを作成しようとしている限り、MVC アーキテクチャを使用してコードの作成を学習することをお勧めします。このテーマに関する Joomla のドキュメントは、こちらから入手できます。とにかく、単純だが一時的な解決策を提供するつもりであり、後で Joomla の MVC を使用して書き直す必要があります。
からデータを選択column1
して、単純なテーブルに表示したいと思います。column2
#__example_table
まず、空のビューを持つコンポーネントを作成する必要があります。このオンライン ツールを使用して、一目でコンポーネントを作成できます。もちろん、空のビューを持つコンポーネントを作成するのは無料です。コンポーネントをビルド、ダウンロード、およびインストールした後、それを と呼びましょう。フォルダー内にcom_mycomponent
と呼ばれるフォルダーがあります。それを開くと、フォルダーが表示され、その中にビュー用のフォルダーがあり、それを と呼びます。com_mycomponent
/components
views
myview
ビュー フォルダーには、view.html.php
ビューのクラスを含む というファイルがあり、ビューのテンプレートのファイルtmpl
を含む というフォルダーも表示されます。default.php
エディターで開き、次のようにメソッドの後view.html.php
に呼び出されるパブリック属性を作成します。$items
getData()
display()
<?php
class MycomponentViewMyview extends JView {
.
.
.
public $items;
public function display($tpl = null) {
.
.
.
$this->items = $this->getData();
parent::display($tpl);
}
public function getData() {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select(array('column1', 'column2'));
$query->from('#__example_table');
$query->where('condition = 1');
$query->order('id DESC');
$db->setQuery($query);
$results = $db->loadObjectList();
if (!empty($results)) {
return $results;
}
return false;
}
}
この例では、ここで説明されている Joomla のデータベース API を使用しました。ドットは、変更する必要のない残りのコードを意味すると考えてください。
ここですべてを開い/components/com_mycomponent/views/myview/tmpl/defailt.php
て削除し、次のように記述します。
<?php
defined('_JEXEC') or die; // No direct access
if (count($this->items)) {
?>
<table style="width: 100%">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</thead>
<tbody>
<?php foreach ($this->items as $item) { ?>
<tr>
<td><?php echo $item->column1; ?></td>
<td><?php echo $item->column2; ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
} else {
echo 'Sorry! No data found...';
}
例は非常に明確で説明の必要はないと思いますが、何が起こっているかについて簡単に説明します。まず、データベースからデータを取得し、外部からアクセス可能な変数に格納するメソッドを作成しました。次に、ビュー クラスのコンストラクタである display メソッドからそのメソッドを呼び出します。次に、ビューのテンプレートで、$items
変数に格納されたレコードにループを使用し、それらをテーブルの行に表示しました。