質問 > 管理機能 > 一覧の上にある検索フォームについて |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
start |
投稿日時: 2020/11/20 19:22
対応状況: −−−
|
一人前 登録日: 2017/11/9 居住地: 投稿: 109 |
一覧の上にある検索フォームについて 商品テーブル元にして新規テーブル作成してそのテーブルに対して一覧画面を作成しました。商品一覧と同じように検索フォームも作成しました。
検索値を選択して検索したら問題なしで動いていますが検索した後に別の画面へ移動してまた新規作成してテーブルの一覧画面へ戻ると検索フォームの値が前の状態ままでした。どうやって初期化します。 public function index(Request $request, $page_no = 1, Paginator $paginator) { $builder = $this->formFactory ->createBuilder(SearchProductTestType::class); $searchForm = $builder->getForm(); /** * ページの表示件数は, 以下の順に優先される. * - リクエストパラメータ * - セッション * - デフォルト値 * また, セッションに保存する際は mtb_page_maxと照合し, 一致した場合のみ保存する. **/ $page_count = $this->session->get('eccube.admin.order.search.page_count', $this->eccubeConfig->get('eccube_default_page_count')); $page_count_param = (int) $request->get('page_count'); $pageMaxis = $this->pageMaxRepository->findAll(); if ($page_count_param) { foreach ($pageMaxis as $pageMax) { if ($page_count_param == $pageMax->getName()) { $page_count = $pageMax->getName(); $this->session->set('eccube.admin.order.search.page_count', $page_count); break; } } } if ('POST' === $request->getMethod()) { $searchForm->handleRequest($request); if ($searchForm->isValid()) { /** * 検索が実行された場合は, セッションに検索条件を保存する. * ページ番号は最初のページ番号に初期化する. */ $page_no = 1; $searchData = $searchForm->getData(); // 検索条件, ページ番号をセッションに保持. $this->session->set('eccube.admin.product.search1', FormUtil::getViewData($searchForm)); $this->session->set('eccube.admin.product.search.page_no', $page_no); } else { // 検索エラーの際は, 詳細検索枠を開いてエラー表示する. return [ 'searchForm' => $searchForm->createView(), 'pagination' => [], 'pageMaxis' => $pageMaxis, 'page_no' => $page_no, 'page_count' => $page_count, 'has_errors' => true, ]; } } else { if (null !== $page_no || $request->get('resume')) { /* * ページ送りの場合または、他画面から戻ってきた場合は, セッションから検索条件を復旧する. */ if ($page_no) { // ページ送りで遷移した場合. $this->session->set('eccube.admin.product.search.page_no', (int) $page_no); } else { // 他画面から遷移した場合. $page_no = $this->session->get('eccube.admin.product.search.page_no', 1); } $viewData = $this->session->get('eccube.admin.product.search1', []); $searchData = FormUtil::submitAndGetData($searchForm, $viewData); } else { /** * 初期表示の場合. */ $page_no = 1; // submit default value $viewData = []; $searchData = FormUtil::submitAndGetData($searchForm, $viewData); // セッション中の検索条件, ページ番号を初期化. $this->session->set('eccube.admin.product.search1', $viewData); $this->session->set('eccube.admin.product.search.page_no', $page_no); } } $qb = $this->productTestRepository->getQueryBuilderBySearchDataForAdmin($searchData); $pagination = $paginator->paginate( $qb, $page_no, $page_count ); return [ 'searchForm' => $searchForm->createView(), 'pagination' => $pagination, 'pageMaxis' => $pageMaxis, 'page_no' => $page_no, 'page_count' => $page_count, 'has_errors' => false, ]; } ▼テンプレート [EC-CUBE] EC-CUBEのバージョン、新規インストールかアップデートか、等 [レンタルサーバ] レンタルサーバ名 [OS] 使用しているOS名、バージョン [PHP] 使用しているPHPのバージョン [データベース] 使用しているDB名、バージョン [WEBサーバ] 使用しているWEBサーバ名、バージョン [ブラウザ] 使用しているブラウザ名、バージョン [導入プラグインの有無] あれば導入プラグインを記載 [カスタマイズの有無] あればカスタマイズ内容を記載(できるだけ具体的に) [現象] 再現手順や、どのような現象が発生しているかなど、具体的に |
468 |
投稿日時: 2020/11/20 20:17
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 一覧の上にある検索フォームについて 検索条件を保持したセッションがクリアされていないのだと思います。
/** * 初期表示の場合. */ の部分の処理を通過していないのではないでしょうか?
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |