ID、名前、id_parent 構造を持つカテゴリ テーブルがあります。私は atk4 を使用しており、インデントされたサブカテゴリでドロップダウンを表示するのが好きです。そう:
home
---cat1
---cat2
------subcat2.1
------subcat2.2
---cat3 etc
機能するものを構築しましたが、これをどのように改善できるかを確認したいと思います。現在、hasMany() に基づく再帰的な SQL クエリがあります。これは、再クエリなしで実行できるように感じます。そして、主な心配は、モデルでスタイリングが定義されていることですが、移動する方法がわかりません。コントローラーの機能を自分で学ぼうとしましたが、これまでのところうまくいきませんでした。これまでの私のコード:
モデル
<?php
class Model_Category extends Model_Table {
public $table='category';
function init() {
parent::init();
$this->addField('id_parent');
$this->addField('name');
$this->hasMany('Category','id_parent');
}
function tree($prefix='') {
$r=array();
$childs=$this->ref('Category');
foreach($childs as $child) {
$r[$childs->id]=$prefix.$childs['name'];
$r=array_merge($r,$childs->tree($prefix.'---'));
}
return $r;
}
}
ページ上:
$f=$this->add('Form');
$m=$this->add('Model_Category');
$m->load(1); // start recursive from home category
$f->addField('dropdown','category')->setValueList($m->tree());