Помогите вывести дерево категорий в dropDownList

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Помогите вывести дерево категорий в dropDownList

Сообщение alexa777 »

Привет. Как преобразовать массив так чтобы выводились субкатегории по такому типу
Авто
--Иномарки
--Отечественные
Недвижимость
--Аренда
--Продажа
Работа
--Вакансии
----Водители
--Резюме


В общем вот форма

Код: Выделить всё

<?= $form->field($model, 'parent_id')->dropDownList(ArrayHelper::map(Category::find()->all(), 'id', 'name', 'parent_id'),
    [
    'prompt' => 'Выбор категории',
    ]
 )
            ?>
ArrayHelper::map(Category::find()->all(), 'id', 'name', 'parent_id') выдает такой массив

Код: Выделить всё

array(5) { 

			[0]=> array(3) { 

				  [9]=> string(8) "Авто" 
				  [10]=> string(24) "Недвижимость" 
				  [11]=> string(12) "Работа"
				   } 
				   
			[11]=> array(2) { 
			
				  [12]=> string(16) "Вакансии" 
				  [13]=> string(12) "Резюме" 
				  } 
				  
			[10]=> array(2) { 
			
				 [14]=> string(12) "Аренда" 
				 [15]=> string(14) "Продажа" 
				 } 
				 
			[9]=> array(2) { 
				 [16]=> string(16) "Иномарки" 
				 [17]=> string(27) "Отечественные " 
			} 
			
			["12"]=> array(1) { 
				 [18]=> string(16) "Водители" 
			} 
    } 

Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Помогите вывести дерево категорий в dropDownList

Сообщение Nex-Otaku »

К Yii2 отношения не имеет.

Простейшая задачка на рекурсию. Погугли "алгоритм вывода дерева рекурсия" и сделай пожалуйста сам, не поленись.
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Помогите вывести дерево категорий в dropDownList

Сообщение alexa777 »

Nex-Otaku писал(а): 2018.02.25, 14:42 К Yii2 отношения не имеет.

Простейшая задачка на рекурсию. Погугли "алгоритм вывода дерева рекурсия" и сделай пожалуйста сам, не поленись.
Гуглить то я умею, но нечего похожего как это сделать в yii2 не нашел. Ну чайник я что поделать))) поэтому и спрашиваю, покажите пример как это сделать
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Помогите вывести дерево категорий в dropDownList

Сообщение ElisDN »

alexa777 писал(а): 2018.02.26, 11:15 Гуглить то я умею, но нечего похожего как это сделать в yii2 не нашел.
Гуглите как сделать это не в Yii2.
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Помогите вывести дерево категорий в dropDownList

Сообщение alexa777 »

ElisDN писал(а): 2018.02.26, 11:51
alexa777 писал(а): 2018.02.26, 11:15 Гуглить то я умею, но нечего похожего как это сделать в yii2 не нашел.
Гуглите как сделать это не в Yii2.
Вот нашел вариант, но почему то тут выводит ошибку Trying to get property of non-object

Код: Выделить всё

 public static function getHierarchy()
     {
         $options = [];

         $parents = self::find()->where("parent_id=0")->all();

         foreach ($parents as $id => $p) {

             $children = self::find()->where('parent_id=:parent_id', ['parent_id' => $p->id])->asArray()->all();
             $child_options = [];

             foreach ($children as $child)
             {
                 $child_options[$child->id] = $child->name;
             }
             $options[$p->name] = ArrayHelper::map($children, 'id', 'name');
         }
         return $options;
     }
Ответить