Извеждане на резултати проблем с под-под-категория

C++ JAVA
Post Reply
User avatar
Ticketa
Потребител
Потребител
Reactions: 3
Posts: 627
Joined: Mon Feb 27, 2012 1:54 pm
Answers: 24
Location: in /root
Contact:

Извеждане на резултати проблем с под-под-категория

Post by Ticketa »

Имам проблем с извеждането на резултатите от базата данните. Използвам 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 категориите.

Code: Select all

    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.'));
    }

Code: Select all

        $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:

Code: Select all

        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
Post Reply