Как мне вывести на одной странице все родительские категории со ссылками на их дочерние категории, структура примерно такая:
На одной странице идут все родительские категории; При клике на категорию, на новой странице отображаются ее вложенные категории.
CategoryController:
public function actionIndex(){
return $this->render('index', [
'model' => $this->outTree($id)
]);
}
public function getAllArray(){
$all = Category::find()->all();
$array = array();
foreach($all as $v){
$array[$v->parentId][] = $v;
}
return $array;
}
public function outTree($parentId) {
$array = $this->getAllArray();
if(isset($array[$parentId])){
echo '<div>';
foreach($array[$parentId] as $v){
echo '<div>'.$v->name.'</div>';
echo '<div>'.$v->id.'</div>';
echo '<div>'.$v->parentId.'</div>';
$this->outTree($v->id);
}
echo '</div>';
}
}
protected function findModel($alias)
{
if (($model = Category::findOne(['alias' => $alias, 'active' => 1])) !== null) {
return $model;
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}
Связь родительских категорий с дочерними:
public function getParent()
{
return $this->hasOne(Category::className(), ['id' => 'parentId']);
}
Как мне сделать такой вывод во view, сейчас вывод идет в контроллере? На данный момент на одной странице выводятся все родительские категории и под ними их дочерние. Нужно ли что-то прописывать в UrlManager?
Вам необходимо передовать в get параметре в контроллер ид родительской категории, в контроллере получать массив дочерних и передовать его(массив) во въюху, там отображать. Если параметр пустой то выводим верхний уровень меню.
public function actionIndex(){
$parentId = Yii::$app->request->get('pcat');
return $this->render('index', [
'model' => $this->outTree($parentId)
]);
}
Соответственно ссылки генерить с параметром pcat
CategoryController: изменить
public function actionIndex()
{
$parentId = Yii::$app->request->get('pcat');
return $this->render('index', [
'categories' => $this->getCategories($parentId)
]);
}
public function getCategories($parentId)
{
if ($parentId) { // если есть родительская категория
$all = Category::find()->andWhere(['parentId' => $parentId])->all();
} else { // если это верхний уровень
// точно не знаю как у вас в базе, предполагаю что у кат. верхнего уровня parentId = NULL
$all = Category::find()->andWhere(['parentId' => null])->all();
}
return $all;
}
Въюха category/index.php:
<?php
foreach($categories as $category) { ?>
<div><?= Html::a($category->name, ['/category', 'pcat' => $category->id])?></div>
<div><?= $category->id ?></div>
<div><?= $category->parentId ?> </div>
<?php } ?>
Виртуальный выделенный сервер (VDS) становится отличным выбором
такая проблема, есть php-скрипт, который парсит данные из RSS на мой сайт
Есть стандартный метод взятый с официального сайта php который извлекает файлы с архива:
У меня ноутбук с установленной лицензионной windows 10 x64На локальный OpenServer x64 установил чистый сайт на wordpress, хочу импортировать на него данные...