Infinitus အမျိုးအစားခွဲခြားမှုသည်အချက်အလက်များသို့မဟုတ်ဆောင်းပါးအမျိုးမျိုးအတွက်သင့်လျော်သောအချက်အလက်စီမံခန့်ခွဲမှုဆိုင်ရာအချက်အလက်စီမံခန့်ခွဲမှုဆိုင်ရာအမျိုးအစားခွဲခြားမှုနည်းလမ်းဖြစ်သည်။ ဤဆောင်းပါးသည် ThinitPp5 မူဘောင်မှတစ်ဆင့်အပြည့်အဝလုပ်ငန်းစဉ်နှင့်နမူနာစည်းမျဉ်းများကိုမည်သို့အကောင်အထည်ဖော်ရမည်ကိုရှင်းပြပါမည်။
Infinitus အမျိုးအစားခွဲခြားမှုသည်ခွဲခြားမှုကိုအမျိုးအစားခွဲမျိုးစုံရှိရန်ခွင့်ပြုသည်။ subcregory တစ်ခုစီသည်လက်ဘိုင်းနှစ်ဖက်စလုံးတွင်ကိုယ်ပိုင်အမျိုးအစားများကိုဆက်ရှိနေနိုင်သည်။ ရှုပ်ထွေးသောခွဲခြားဆက်ဆံမှုများကိုစီမံခန့်ခွဲရန်အတွက်ဤဖွဲ့စည်းပုံသည်ပြောင်းလွယ်ပြင်လွယ်။ အဆင်ပြေသည်။
Infinitus အမျိုးအစားခွဲခြားမှုကိုအကောင်အထည်ဖော်ရန်အတွက်သင်သည်အောက်ပါအကွက်များပါ 0 င်သည့်ခွဲခြားသတ်မှတ်ချက်ကိုဖန်တီးရန်လိုအပ်သည်။
TherPPH5 တွင် Model Class ကိုအမျိုးအစားခွဲခြားရန်အချက်အလက်များကိုအသုံးပြုပါ။ အောက်ဖော်ပြပါဥပမာသည်အမျိုးအစားမော်ဒယ်အမျိုးအစားများကိုသတ်မှတ်ပြီး,
namespace app\index\model;
use think\Model;
class Category extends Model
{
// စားပွဲပေါ်မှာအမည်ကိုသတ်မှတ်ပါ(ပုံမှန်စည်းမျဉ်းစည်းကမ်းတွေကိုတွေ့ဆုံခဲ့ကြပါ)
protected $table = 'category';
// လက်ရှိအမျိုးအစားခွဲခြားခြင်း၏တိုက်ရိုက်အမျိုးအစားခွဲကိုရယူပါ
public function childrenCategories()
{
return $this->hasMany('Category', 'parent_id', 'id')
->order('id', 'asc');
}
// အားဖြည့်မျိုးကွဲအားလုံးကိုရယူပါ,အမျိုးအစားခွဲအပါအ 0 င်အမျိုးအစားခွဲ
public function allChildrenCategories()
{
return $this->childrenCategories()->with('allChildrenCategories');
}
}
အထက်ဖော်ပြပါနည်းလမ်းသည် TakePpP ၏အသင်းပုံစံပုံစံကိုအသုံးပြုသည်။
Controller သည်မော်ဒယ်မှတစ်ဆင့်ခွဲခြားထားသောအချက်အလက်များကိုရှာဖွေရန်နှင့်လည်ပတ်နိုင်သည်။ နမူနာကုဒ်သည်ပထမအဆင့်ခွဲခြားခြင်းနှင့်ဖြတ်သန်းခြင်းသည်အတန်းခွဲများကိုရရှိသည်။
$categories = Category::where('parent_id', 0)->select();
foreach ($categories as $category) {
$childrenCategories = $category->childrenCategories;
// subclassing ဤနေရာတွင်လုပ်ငန်းများ၌နိုင်ပါတယ်
}
အကယ်. အမျိုးအစားတစ်ခု၏အမျိုးအစားခွဲများ (အဆင့်ခွဲခြားကဏ်အမျိုးအစားများအပါအ 0 င်) ၏အမျိုးအစားခွဲများအားလုံးရရှိရန်လိုအပ်ပါကသင်အသုံးပြုနိုင်သည်။
$allChildrenCategories = $category->allChildrenCategories;
ဤနည်းလမ်းသည်ပိုမိုလုပ်ဆောင်မှုများဆက်လက်လုပ်ဆောင်နိုင်သည့်အပေါင်းအသင်းပုံစံများကိုစုဆောင်းခြင်းကိုပြန်လည်ရောက်ရှိစေသည်။
View တွင်အဆင့်ပေါင်းစုံခွဲခြားသတ်မှတ်သည့်အချက်အလက်များကိုပြသရန်အဆင့်ဆင့်တွင်ထစ်ချထားသည့် display ကို recursive function များမှတဆင့်အကောင်အထည်ဖော်နိုင်သည်။
function renderCategories($categories, $indent = 0)
{
foreach ($categories as $category) {
echo str_repeat(' ', $indent);
echo $category->name . '<br/>';
renderCategories($category->childrenCategories, $indent + 1);
}
}
renderCategories($categories);
ထို့အပြင် ThinkPhp5 Template English သည် Volist tag ကို အသုံးပြု. အမျိုးအစားများ recursive retering ကိုထောက်ပံ့သည်။
<ul>
{volist name="categories" id="category"}
<li>{$category.name}</li>
{volist name="category.childrenCategories" id="child"}
<ul>
<li>{$child.name}</li>
{include file="category_tree" /}
</ul>
{/volist}
{/volist}
</ul>
ဤနည်းလမ်းသည်ရိုးရှင်းလွယ်ကူပြီးထိန်းသိမ်းရန်လွယ်ကူသည်။
ကျိုးကြောင်းဆီလျော်သောဒေတာစားပွဲဝိုင်းဖွဲ့စည်းပုံဖွဲ့စည်းပုံဖွဲ့စည်းပုံဖွဲ့စည်းပုံတွင်မော်ဒယ်ဆက်ဆံရေးနှင့်ပြန်လည်ထူထောင်ရေးမျက်နှာပြင်ဖြင့် Metherphp5 သည်ရှုပ်ထွေးသောခွဲခြားလိုအပ်ချက်များကိုဖြည့်ဆည်းရန်အဆုံးမဲ့ခွဲခြားထားသည့်လုပ်ဆောင်မှုကိုထိရောက်စွာအကောင်အထည်ဖော်နိုင်သည်။ ဤဆောင်းပါးတွင်မိတ်ဆက်ခြင်းနှင့်နမူနာကုဒ်သည်သင်၏စီမံကိန်းတွင်အဆင့်ပေါင်းစုံခွဲခြားမှုကိုအကောင်အထည်ဖော်ရန်သင့်အားကူညီခြင်းနှင့်ရည်ညွှန်းမည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။