我有一個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());
也在這裏:http://phpmagister.com/dropdown-with-indented-categories-in-agile-toolkit-16025/ – romaninsh
其實這個解決方案看起來相當不錯。我正在研究樹,如果你想要一個單一查詢樹,你可以使用這個:http://stackoverflow.com/questions/169817/is-it-possible-to-query-a-tree-structure-table-in -mysql功能於一個單查詢 - 一個。您可以將每個級別的查詢分組,但會增加內存消耗。無論如何,它也很難分頁。保持你的解決方案,這很好。 – romaninsh
確實很棒,tx抽出時間審覈。我確實也嘗試過使用lpos/rpos列的類別。然而,它需要遞歸來重建lpos/rpos列。我有代碼爲hasMany()遞歸重建工作,但是對於我這裏描述的情況,它沒有這些字段。 –