バージョン選択

フォーラム

メニュー

オンライン状況

25 人のユーザが現在オンラインです。 (14 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 25
もっと...

サイト内検索

質問 > 管理機能 > 一覧の上にある検索フォームについて

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
start
投稿日時: 2020/11/20 19:22
対応状況: −−−
一人前
登録日: 2017/11/9
居住地:
投稿: 81
一覧の上にある検索フォームについて
商品テーブル元にして新規テーブル作成してそのテーブルに対して一覧画面を作成しました。商品一覧と同じように検索フォームも作成しました。
検索値を選択して検索したら問題なしで動いていますが検索した後に別の画面へ移動してまた新規作成してテーブルの一覧画面へ戻ると検索フォームの値が前の状態ままでした。どうやって初期化します。

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
居住地:
投稿: 2701
Re: 一覧の上にある検索フォームについて
検索条件を保持したセッションがクリアされていないのだと思います。

/**
* 初期表示の場合.
*/
の部分の処理を通過していないのではないでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は67,511名です
総投稿数は98,889件です

投稿数ランキング

1
seasoft
7333
2
AMUAMU
2712
3
468
2701
4
nanasess
2116
5
umebius
1793
6
yuh
1612
7
red
1427
8
h_tanaka
1051
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.