2015-04-29 160 views
2

從這裏開始是一個例子,我想要使用Cake-php的方式來創建一個組合框從兩個表類別和子類填充。CakePHP DropDown與父母和孩子

-- Category1 
--- Subcategory1 
--- Subcategory2 
--- ... 
-- Category2 
--- Subcategory1 
--- Subcategory2 
--- ... 

在我的控制器我試圖讓使用代碼波紋管其子類別的清單,但沒有奏效,它只是返回子類別的清單:

$this->set('category',($this->category->subcategory->find('list'))); 

這裏是協會我使用的模型之間:

分類模型

<?php 

class category extends AppModel{ 

     public $hasMany=array(

       'subcategory'=>array(
         'className'=>'subcategories', 

        ) 

      ); 

} 

子類別型號

<?php 

class subcategory extends AppModel{ 


    public $belongsTo=array(

     'category'=>array(
       'className'=>'categories', 
       'foreignKey'=> 'categories_id' 
      ) 

     ); 


} 

我希望我的問題很清楚並且非常感謝。

+0

[動態OPTGROUP下拉列表]的可能的複製(http://stackoverflow.com/questions/1873997/dropdown-list-with-dyanmic-optgroup) – AgRizzo

回答

0
$options = array(); 
foreach($this->Category->find('all') as $key => $category) { 
    $options[$category['Category']['name']] = $this->Category->SubCategory->find('list') 
} 
$this->set('category', $options); 
+0

謝謝您的回答,反正它沒有按預期工作每個類別都填充所有子類別,當我調試$ this-> Category-> SubCategory-> find('list')時,只有子類別返回像這樣的數組: array( \t(int )1010 =>'Appartements', \t(int)1020 =>'Maisons et Villas', \t(int)1030 =>'Locations de vacances', \t(INT)1040 => '沒有找到', \t(INT)1050> '局等高原', \t(INT)1060> 'Magasins百貨公司等COMMERCES' –

+0

請告訴我它看起來當PR等( $ this-> Category-> find('all',array('contains'=>'SubCategory')))? –

+0

這裏是返回的數組: 陣列( \t(INT)0 =>數組( \t \t '類別'=>數組( \t \t \t 'ID'=> '1000', \t \t \t '標題' > 'IMMOBILIER' \t \t) \t \t '子類別'=>數組( \t \t \t(INT)0 =>數組( \t \t \t \t 'ID'=> '1010', \t \t \t \t '標題'=> 'Appartements酒店', \t \t \t \t 'categories_id'=> '1000' \t \t \t),.... –

0
$data = $this->Category->find('all', array('contain' => 'SubCategory')); 
    $categories = array(); 
    foreach ($data as $key => $category) { 
     $categories[$category['category']['title']] = array(); 
     foreach($category['subcategories'] as $subcategory) { 
      array_push($categories[$category['category']['title']], $subcategory['title']); 
     } 
    } 

    pr($categories);