Codeigniter 4 Пагинация 404 Ошибка "Файл не найден"

Я действительно изо всех сил пытаюсь преодолеть ошибку 404 File Not Found в CI4 с момента добавления разбивки на страницы в функцию модели. Я предполагаю, что это связано только с маршрутизацией, поскольку она также выдает ту же ошибку на моей странице subbrand_name, которая не включает нумерацию страниц в свой код модели и работала нормально, пока я не добавил нумерацию страниц на страницу brand_name.

Файл моих маршрутов:

$routes->get('shop/brands/(:segment)', 'Shop::brand_name/$1');
$routes->get('shop/brands/(:segment)/(:segment)', 'Shop::subbrand_name/$1/$2');

Мой контроллер:

    public function brand_name($brand_name_slug)
    {
        $model = new ShopModel();

        $data = [
            'category_menu' => $model->category_menu(),
            'brand_menu' => $model->brand_menu(),
            'nav' => $model->nav(),
            'subnav' => $model->subnav(),
            'shop' => $model->brand_name($brand_name_slug),
            'pager' => $model->pager
        ];

        if (empty($data['shop']))
        {
            throw new \CodeIgniter\Exceptions\PageNotFoundException('Cannot find the news item: '. $slug);
        }

        echo view('templates/header', $data);
        echo view('shop/view', $data);
        echo view('templates/footer', $data);
    }

Моя модель:

    public function brand_name($brand_name_slug)
    {
        return $this
                    ->table('shop a')
                    ->select()
                    ->join('(SELECT sku, MIN(sale_price) AS sale_price FROM shop GROUP BY sku) AS b', 'a.sku = b.sku AND a.sale_price = b.sale_price')
                    ->where('availability', 'in stock')
                    ->where('a.sku !=', '')
                    ->where('brand_name_slug', $brand_name_slug)
                    ->groupBy('a.sku')
                    ->orderBy('brand_name, subbrand_name, product, size, unit')
                    ->paginate(15);
    }

person seixwebdev    schedule 05.06.2020    source источник
comment
Можете ли вы добавить URL-адрес, который вы пытаетесь нажать, получая 404?   -  person ViLar    schedule 05.06.2020
comment
www.seixwebdev.co.uk/shop/brands/hugo-boss   -  person seixwebdev    schedule 05.06.2020
comment
Кроме того, вообще не редактировал файл .htacess.   -  person seixwebdev    schedule 05.06.2020


Ответы (1)


Оказывается, это не было связано с маршрутизацией... просто мой JOIN был глючным.

Удалось отсортировать его, заменив shop a и a.sku в части JOIN аргумента на shop и shop.sku. Сработало отлично... НАКОНЕЦ-ТО!

    public function brand_name($brand_name_slug)
    {
        return $this
                    ->table('shop')
                    ->select('*')
                    ->join('(SELECT sku, MIN(sale_price) AS sale_price FROM shop GROUP BY sku) AS b', 'shop.sku = b.sku AND shop.sale_price = b.sale_price')
                    ->where('availability', 'in stock')
                    ->where('shop.sku !=', '')
                    ->where('brand_name_slug', $brand_name_slug)
                    ->groupBy('shop.sku')
                    ->orderBy('brand_name, subbrand_name, product, size, unit')
                    ->paginate(15);
    }
person seixwebdev    schedule 05.06.2020