Ticketa
Registered
Имам проблем с извеждането на резултатите от базата данните. Използвам YII Framework
Имам опция за избор на Главна категория, Под категория и под категория
1. Главна категория (id: 1)
1.1 Под категория (id: 2)
1.1.1 под категория (id: 3)
В базата данни използвам съхранявам само последния номер на подкатегорията - 1.1.1 (id: 1)
Когато отворя страницата с избор на 1.1 Под категория (id: 2) виждам резултатите и от 1.1.1 , обаче ако отваря главната катеогиря (майката) 1. не виждам резултатите от 1.1.1 и 1.1 категориите.
При debug:
1. Главна категория (НЕ - НЕпоказва необходимите резултати)
[category_id] => 1
[parent_id] =>
1.1. Под категория (ОК - показва необходимите резултати)
[category_id] => 2
[parent_id] => 1
1.1.1. Под категория (ОК - показва необходимите резултати)
[category_id] => 3
[parent_id] => 2
Имам опция за избор на Главна категория, Под категория и под категория
1. Главна категория (id: 1)
1.1 Под категория (id: 2)
1.1.1 под категория (id: 3)
В базата данни използвам съхранявам само последния номер на подкатегорията - 1.1.1 (id: 1)
Когато отворя страницата с избор на 1.1 Под категория (id: 2) виждам резултатите и от 1.1.1 , обаче ако отваря главната катеогиря (майката) 1. не виждам резултатите от 1.1.1 и 1.1 категориите.
Код:
protected function findCategoryBySlug($slug)
{
if (($category = Category::findOne(['slug' => $slug, 'status' => Category::STATUS_ACTIVE])) !== null) {
return $category;
}
throw new NotFoundHttpException(t('app', 'The requested page does not exist.'));
}
Код:
$category = $this->findCategoryBySlug($slug);
$searchCategories = Category::find()->where(['status' => Category::STATUS_ACTIVE])->orderBy(['sort_order' => SORT_ASC])->all();
$categories = Category::getHierarchyOfCategoriesBySlug($slug, true);
$childCategories = Category::find()->where(['parent_id' => $category->category_id, 'status' => Category::STATUS_ACTIVE])->orderBy(['sort_order' => SORT_ASC])->all();
$categoryPlaceholderText = t('app', 'Choose Category');
if ($slug = request()->get('slug')) {
$chosenCategory = self::findCategoryBySlug($slug);
$categoryPlaceholderText = Icon::make($chosenCategory->icon) . ' ' . html_encode($chosenCategory->name);
}
$customFields = '';
if (count($categories) == 1) {
$categoryId = $category->category_id;
$categoryFields = CategoryField::find()->where(['category_id' => $categoryId])->orderBy(['sort_order' => SORT_ASC])->all();
// retrieve custom fields
$typeData = [];
foreach ($categoryFields as $field) {
$typeData[] = [
'type' => $field->type,
'field' => $field,
];
}
foreach ($typeData as $data) {
$type = $data['type'];
$field = $data['field'];
if (!is_file(\Yii::getAlias('@' . str_replace('\\', '/', $type->class_name) . '.php'))) {
continue;
}
$className = $type->class_name;
$component = new $className();
if (!($component instanceof Type)) {
continue;
}
$component->field = $field;
$component->params = [
'categoryId' => $categoryId,
];
$component->handleFrontendSearchFormDisplay();
}
$customFields = $this->renderPartial('_custom-search');
}
При debug:
Код:
if ($slug = request()->get('slug')) {
$chosenCategory = self::findCategoryBySlug($slug);
print_r($chosenCategory);
$categoryPlaceholderText = Icon::make($chosenCategory->icon) . ' ' . html_encode($chosenCategory->name);
}
1. Главна категория (НЕ - НЕпоказва необходимите резултати)
[category_id] => 1
[parent_id] =>
1.1. Под категория (ОК - показва необходимите резултати)
[category_id] => 2
[parent_id] => 1
1.1.1. Под категория (ОК - показва необходимите резултати)
[category_id] => 3
[parent_id] => 2