EC-CUBE / ec-cube

EC-CUBE is the most popular e-commerce solution in Japan
https://www.ec-cube.net
Other
744 stars 650 forks source link

4.2系で/product/list?pageno=abcと数値以外を指定するとシステムエラーが発生する。 #6206

Closed k-yamamura closed 2 months ago

k-yamamura commented 5 months ago

概要(Overview)

URLに /product/list?pageno=abc/product/list?pageno=1*1 等数値以外を指定するとシステムエラーになる。

関連 : https://github.com/EC-CUBE/ec-cube/issues/6074

システムエラーではなく1ページ目かあるいは404の方が良いかも。

回避策として、

/** @var SlidingPagination $pagination */
$pagination = $paginator->paginate(
    $query,
    !empty($searchData['pageno']) && is_int($searchData['pageno']) ? $searchData['pageno'] : 1,
    !empty($searchData['disp_number']) ? $searchData['disp_number']->getId() : $this->productListMaxRepository->findOneBy([], ['sort_no' => 'ASC'])->getId()
);

が手っ取り早く直せるが、厳密にチェックするなら正規表現チェックの方が良さそう。

再現手順(Procedure)

上記の通り

環境(Environment)

EC-CUBE:4.2.x

EC-CUBE4.0だと1ページ目が表示され、 EC-CUBE4.1だと1ページ目が表示されているが商品情報は表示されず。

paginate() must be of the type int, string given

というエラーが発生するので、knp-paginator-bundleのバージョンアップによって発生するようになったかも。

dotani1111 commented 5 months ago

@k-yamamura ありがとうございます。 再現確認致しました。 4.0/4.1同様に、1ページ目を表示させる仕様で良いかと思いました。